我想检查 gitlab-ci.yml 中的单个阶段中的分支是否是标签。然后根据分支是否是标签,执行一组特定的命令:
IF tag:
A SET OF COMMANDS
ELSE:
ANOTHER SET OF COMMAND
Run Code Online (Sandbox Code Playgroud)
我知道只有: -tags 可用于检查分支是否是标签,但是如何检查分支,然后在单个 gitlab-ci 阶段中根据分支类型应用不同的命令集?在这种情况下,如果分支不是标签,我将应用一组不同的命令。
some_stage:
only:
- tags
script:
- | SET OF COMMANDS
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用 Gitlab-CI预定义变量:
仅当从分支触发管道时,“CI_COMMIT_BRANCH”变量才会保存分支名称,否则它将不保存任何值。这同样适用于“CI_COMMIT_TAG”变量,该变量仅在从标签触发管道的情况下保存值。
您可以使用规则来检查这些变量并决定是否要执行作业。例如,如果您只想从标签构建 docker 镜像:
build_docker:
rules:
- if: '$CI_COMMIT_TAG != null && $CI_BUILD_TAG =~ *SOME_REGEX*'
when: on_success
Run Code Online (Sandbox Code Playgroud)
更新:或者您可以使用脚本内的变量来进行检查,但我建议您将逻辑分成多个作业。一个用于标签工作,另一个用于分支工作。并指定作业何时执行的规则。
最后一件事:有一个名为CI_BUILD_TAG的已弃用标签,因此如果您使用的是旧版本的 gitlab。
归档时间: |
|
查看次数: |
3942 次 |
最近记录: |