作者:xc15212 | 来源:互联网 | 2023-02-08 23:42
如何仅在标记的Master分支上运行.gitlab-ci.yml作业?
job:
script:
- echo "Do something"
only:
- master
- tags
如果存在任何条件,则上述代码将运行:主分支或标记的提交.
我的目标是让这个生产部署运行,但它需要它在Master分支上并且它被标记(带有版本).否则,我将有另一个工作,如果它缺少一个标签将推送到暂存.
1> Sergio Tomas..:
此行为将在版本12中引入。
未解决的问题最近已更新:
Jason Lenny @jlenny将标题从{-Update .gitlab-ci.yml更改为支持构建条件的连接逻辑-}更改为构建条件的合并逻辑MVC·2天前
Jason Lenny @jlenny更改里程碑至12.0·2天前
(手指交叉)
一种解决方案是使用except
关键字排除所有分支,再结合only
在标签上运行,这样,您就可以仅在master分支中的标签上运行管道:
only:
- tags
except:
- branches
我正在使用版本 11.3.4
2> Eric D. John..:
感谢其他人,例如Matt Alioto,他发表了有关公开发行的文章(该标签被贴上了Product Vision 2019
这样的标签,希望他们能在今年淘汰)。
对于Carlson Cole的问题,这将起作用:
job_for_master_no_tags:
stage: deploy
script:
- echo "Release to Staging"
only:
- master
job_for_master_tags_only:
stage: deploy
script:
- echo "Release to Production"
only:
- tags
except:
- /^(?!master).+@/ # Ruby RegEx for anything not starting with 'master'
要查看此RegEx的工作方式,请查看https://rubular.com/r/1en2eblDzRP5Ha
我在GitLab 11.7.0版上对此进行了测试,并且可以正常工作
注意:如果您尝试使用- /^(?!master).+/
(不使用@
),则此方法无效-了解到了困难的方法
从11.9.4开始,“危险”正则表达式(如否定的反正号(?!))不再起作用。请参见https://docs.gitlab.com/ee/ci/yaml/#supported-onlyexcept-regexp-syntax尽管可以手动启用它们。
3> hannes ach..:
我成功了,这是我的工作代码段,其他所有代码都不适合我
only:
- tags # please mention the 's' compared to Sergio Tomasello's solution
except:
- branches
我用11.4.3
4> 小智..:
gitlab-ci尚不支持此行为,尽管有一个开放的问题要添加。
同时,我也听到了一些传闻,
only:
- master
only:
- tags
将完成这项工作(以及传闻不会完成)。
根据https://gitlab.com/gitlab-org/gitlab-ce/issues/27818#note_38463332,第二个仅覆盖第一个。
@MattAlioto太糟糕了以至于链接不再存在,请尝试尝试提供简短的示例,以防原始源消失了;)