【问题标题】:Trigger a Jenkins pipeline by tagging an existing commit通过标记现有提交来触发 Jenkins 管道
【发布时间】:2018-11-19 13:41:30
【问题描述】:

说明

我设置了 Jenkins (2.126) 以在推送新标签时构建管道。具体来说,我想将master 上的现有提交标记为release-3 并让它触发构建。根据几个消息来源,我想要的是可能的:

https://mohamicorp.atlassian.net/wiki/spaces/DOC/pages/136740885/Triggering+Jenkins+Based+on+New+Tags

不幸的是,当我标记现有提交并将其推送到 Git 存储库时,什么也没有发生。其他构建(由分支触发)按预期工作,并且有问题的标签触发构建在手动启动时成功完成。

根据一些人的说法,标签触发的管道应该从 2.3 版开始工作。有什么我可以配置使其工作的吗?

尝试截图

尝试在* * * * * 进行正常的管道轮询:

尝试使用多分支管道,扫描每个1 minute

相关问题

我发现了与该问题相关的以下问题,应该可以解决。

【问题讨论】:

  • 您使用的是哪种管道?它是多分支还是“普通独立”管道?最近 Jenkins 博客为此添加了一个帖子 - jenkins.io/blog/2018/05/16/pipelines-with-git-tags。它在多分支管道中运行良好,但是我还没有尝试过正常的管道工作。另外,你能分享一下你的管道吗?
  • @tftd 我的设置使用普通管道,设置与提供链接上的图片完全相同。完整资源可在github.com/Oduig/effective-ci-with-microservices 获得。我认为 Jenkinsfile 无关紧要,因为构建触发器发生在甚至读取文件之前。
  • 嗯.. 或许你需要在 github 的 webhook 中启用 Branch or tag creation 事件?
  • @tftd 我想我可以使用 githooks,但无论存储库的类型如何,我都希望它可以工作。我们为不同类型的项目使用不同的服务器(工作中的 GitLab,私人事物的 BitBucket,操作系统的 GitHub)。我意识到我让它变得困难,但这个问题是故意笼统的:我可以在 Jenkins 中配置这种类型的行为而不求助于第三方工具吗?对我来说,这似乎不太可能支持多分支管道,但不支持单分支管道。
  • 另外,请记住,当您使用普通管道(即“新作业 -> 管道”)时,您为 SCM 输入的设置实际上是在告诉 Jenkins 如何以及从何处检索Jenkinsfile 来构建项目。这与您设置Branch sourcesSource Code Management 的多分支管道(或正常的jenkins 作业)中的设置完全不同。这可能是它不适用于“正常管道”的部分原因。

标签: git jenkins


【解决方案1】:

您可以使用Generic Webhook Trigger Plugin

在 GitHub 中:

  1. 在 GitHub 中设置 webhook 以调用 JENKINS_URL/generic-webhook-trigger/invoke?some-token-here

在詹金斯:

  1. 创建作业并启用“触发器”下的通用触发器
  2. 使用 JSONPath $.ref 配置名为 ref 的变量
  3. 将过滤器文本设置为 $ref
  4. 将过滤器正则表达式设置为 ^(refs/tags/.+)$
  5. 将令牌设置为 some-token-here

现在,当一个标签被推送到 repo 时,这个作业就会触发。

您可能还想从 webhook 中选择其他值,例如 $.repository.ssh_url 以获取 SSH 克隆 URL。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2021-09-20
  • 1970-01-01
相关资源
最近更新 更多