前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitLabCI系列之流水线语法第三部分

GitLabCI系列之流水线语法第三部分

作者头像
DevOps云学堂
发布2020-05-13 09:36:13
1.4K0
发布2020-05-13 09:36:13
举报

only & except

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

  1. only定义哪些分支和标签的git项目将会被job执行。
  2. 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.com
codescan:  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.com
workflow:  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  - deploy
build:  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_failure
unittest:  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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps持续集成 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • rules
    • rules:if
      • rules:changes
        • rules:exists
          • rules:allow_failure
          • workflow:rules
          • 综合实例代码
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档