快捷搜索:

GitLabCI系列之流水线语法

GitLabCI系列之流水线语法

本文是《GitLabCI实践》教程部分内容,点击上面图片报名学习!


only & except

only`和except是两个参数用分支策略来限制jobs构建:

only定义哪些分支和标签的git项目将会被job执行。except定义哪些分支和标签的git项目将不会被job执行。


配置仅允许master分支构建

job:  only:-master



rules


rules允许按顺序评估单个规则对象的列表,直到一个匹配并为作业动态提供属性. 请注意, rules不能only/except与only/except组合使用。

可用的规则条款包括:

if (类似于only:variables )changes ( only:changes相同)exists


rules:if

如果DOMAIN的值匹配,则需要手动运行。不匹配on_success。条件判断从上到下,匹配即停止。多条件匹配可以使用&& ||

variables:  DOMAIN: example.comcodescan:  stage: codescan  tags:    - build  script:    - echo "codescan"    - sleep 5;  #parallel: 5  rules:    - if: '$DOMAIN == "example.com"'      when: manual-when:on_success


rules:changes

接受文件路径数组。如果提交中Jenkinsfile文件发生的变化则为true。


codescan:  stage: codescan  tags:    - build  script:    - echo "codescan"    - sleep 5;  #parallel: 5  rules:    - changes:      - Jenkinsfile      when: manual    - if: '$DOMAIN == "example.com"'      when: on_success    - when: on_success
rules:exists

接受文件路径数组。当仓库中存在指定的文件时操作

codescan:  stage: codescan  tags:    - build  script:    - echo "codescan"    - sleep 5;  #parallel: 5  rules:    - exists:      - Jenkinsfile      when: manual     - changes:      - Jenkinsfile      when: on_success    - if: '$DOMAIN == "example.com"'      when: on_success    - when: on_success
rules:allow_failure

使用allow_failure: true rules:在不停止管道本身的情况下允许作业失败或手动作业等待操作。

job:  script: "echo Hello, Rules!"  rules:    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'      when: manual      allow_failure: true

在此示例中,如果第一个规则匹配,则作业将具有以下when: manual和allow_failure: true。

workflow:rules


顶级workflow:关键字适用于整个管道,并将确定是否创建管道。when :可以设置为always或never . 如果未提供,则默认值always。

variables:  DOMAIN: example.comworkflow:  rules:    - if: '$DOMAIN == "example.com"'    - when: always
综合实例代码
before_script:  - echo "before-script!!"variables:  DOMAIN: example.com  workflow:  rules:    - if: '$DOMAIN == "example.com"'      when: always    - when: never    stages:  - build  - test  - codescan  - deploybuild:  before_script:    - echo "before-script in job"  stage: build  script:    - echo "mvn clean "    - echo "mvn install"    - ech "$DOMAIN"  after_script:    - echo "after script in buildjob"  rules:    - exists:      - Dockerfile      when: on_success       allow_failure: true    - changes:      - Dockerfile      when: manual    - when: on_failureunittest:  stage: test  script:    - ech "run test"  when: delayed  start_in: '5'  allow_failure: true  retry:    max: 1    when:      - script_failure  timeout: 1 hours 10 minutes    deploy:  stage: deploy  script:    - echo "hello deploy"    - sleep 2;  rules:    - if: '$DOMAIN == "example.com"'      when: manual    - if: '$DOMAIN == "aexample.com"'      when: delayed      start_in: '5'    - when: on_failure  codescan:  stage: codescan  script:    - echo "codescan"    - sleep 5;  when: on_success  parallel: 5 after_script:  - echo "after-script"  - ech

您可能还会对下面的文章感兴趣: