侧边栏壁纸
  • 累计撰写 106 篇文章
  • 累计创建 19 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

七、GitLab Pipeline中基本语法(三)(DevOps笔记)

zero
2022-10-30 / 0 评论 / 0 点赞 / 16 阅读 / 3603 字
温馨提示:
本文最后更新于 2024-07-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、only&ecxept-限制分支标签(逐渐被rules所替代)

  • only和except用分支策略来限制jobs构建:

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

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

job:
# use regexp
only:
  - /^issue-.*$/
# use special keyword
except:
  - branches

七、GitLab Pipeline中基本语法(三)(DevOps笔记)-图片一.png

2、rules-构建规则

  • rules允许按顺序评估单个规则,直到匹配并为作业动态提供属性。

  • rules不能与only/except:组合使用。

可用的规则 :

  • if (如果条件匹配)

  • changes(指定文件发生变化)

  • exists(指定文件存在)

2.1、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

2.2、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

2.3、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

2.4、rules-allow_failure

  • 使用allow_failure: true

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

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

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

3、workflow-rules-管道创建

  • 顶级workflow关键字适用于整个管道,并将确定是否创建管道。

  • when: 可以设置为always或never,如果未提供,则默认值always。

workflow:
  rules:
    - if: '$DOMAIN == "example.com"'
    - when: always

0

评论区