如何仅在标记的分支上运行gitlab-ci.yml作业?
如何仅在标记的主分支上运行.gitlab-ci.yml作业如何仅在标记的分支上运行gitlab-ci.yml作业?,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,如何仅在标记的主分支上运行.gitlab-ci.yml作业 job: script: - echo "Do something" only: - master - tags 如果存在以下任一条件,则将运行上述代码:主分支或标记的提交 我的目标是在生产部署中运行此操作,但这需要它位于主分支上,并对其进行标记(使用版本)。否则,如果缺少标记,我将有另一个作业推送到staging。gitlab ci还不支持此行为,尽管有添加它的方法 与此同时,我还听到一些轶事报道说 only:
job:
script:
- echo "Do something"
only:
- master
- tags
如果存在以下任一条件,则将运行上述代码:主分支或标记的提交
我的目标是在生产部署中运行此操作,但这需要它位于主分支上,并对其进行标记(使用版本)。否则,如果缺少标记,我将有另一个作业推送到staging。gitlab ci还不支持此行为,尽管有添加它的方法 与此同时,我还听到一些轶事报道说
only:
- master
only:
- tags
将完成工作(以及它不会完成的轶事报道) 此行为将在版本中引入 最近更新了: Jason Lenny@jlenny将标题从{-Update.gitlab-ci.yml更改为 支持构建条件的连接逻辑-}到连接逻辑 对于构建条件,MVC·2天前 Jason Lenny@jlenny在两天前将里程碑更改为12.0 (祈求好运) 解决方案是使用
except
关键字排除所有分支,并结合only
在标记上运行,这样您就可以只在主分支中的标记上运行管道:
only:
- tags
except:
- branches
我使用的是版本
11.3.4
我让它工作了,这是我的工作代码片段,所有其他的都不是为我工作的
only:
- tags # please mention the 's' compared to Sergio Tomasello's solution
except:
- branches
我使用11.4.3多亏了Matt Alioto这样的人,他发布了关于2019年产品愿景的帖子(标签为Product Vision 2019
,希望他们能在今年完成)
针对卡尔森·科尔的问题,这将起作用:
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'
- 要了解这个正则表达式是如何工作的,请查看
- 我在GitLab版本上测试了它,它可以正常工作
- 注意:如果您尝试使用
(没有-/^(?master)。+/
)它不起作用-了解到我的解决方案是困难的@
job: script: - echo "Do something" only: refs: - master - tags variables: - $CI_COMMIT_BRANCH == "master"
到目前为止,gitlab中还没有解决此问题的适当内置解决方案。为了跟踪正确解决方案的开发并保持工作环境的更新,我创建了:如何运行标签并检查标签是否属于脚本中的主分支?我认为它也应该与变量一起工作,并尝试使用
,也仅与规则:-if:$CI\u COMMIT\u tag!=null'&&$CI\u COMMIT\u BRANCH==“master”
,但没有成功…@Wolfson问题是,如果管道是由标记触发的,一起使用:refs:-测试变量:-$CI\u COMMIT\u标记!=null
没有定义,反之,我尝试过使用提交触发器和CI\u COMMIT\u分支
,但似乎没有任何区别。谢谢你关于这个公开问题的说明。我唯一能建议的是将正则表达式与用户正在试验的东西结合起来。我刚刚尝试了建议的解决方案,它确实有效@MattAlioto太糟糕了,链接不再存在,请始终尝试包含一个简短的示例,以防原始源消失;)由于11.9.4中的“危险”正则表达式,如负lookaheads(?!),不再起作用。请看,您可以手动启用它们。感谢大家提醒@SebastianSebaldI使用11.2版。在我的测试中,它应该以$结尾。最后的结果是CI\u COMMIT\u标记
。到目前为止,我测试了/^(?master)。+$/
也将在其他标记的服务器上运行branches@kound您使用的是哪个版本的GitLab?这个问题似乎已经迁移到了-而且它错过了12.0,但该特性的开发仍在进行中,所以它可以在12.1中使用。如何仅在主分支上的标记上运行?我们不能标记任何分支吗?该示例还将在其他分支上运行,然后在受保护的分支上运行。欢迎使用StackOverflow。虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,您将在将来回答读者的问题,而不仅仅是现在提问的人,请编辑您的答案以添加解释,并说明适用的限制和假设。job\u for\u master\u tags\u only
- 注意:如果您尝试使用