环境:
BitBucket
Concourse 3.14.0
想知道是否可以使用 Git webhook 配置 Concourse 管道,它会检查是否发生了新的提交,并会触发基于该触发器的管道构建?我查看了https://concourse-ci.org/resources.html#resource-webhook-token,但它没有告诉我如何从 Concourse 获取 webhook 令牌以及它是否支持我的要求。
非常感谢任何反馈。
环境:
BitBucket
Concourse 3.14.0
想知道是否可以使用 Git webhook 配置 Concourse 管道,它会检查是否发生了新的提交,并会触发基于该触发器的管道构建?我查看了https://concourse-ci.org/resources.html#resource-webhook-token,但它没有告诉我如何从 Concourse 获取 webhook 令牌以及它是否支持我的要求。
非常感谢任何反馈。
我认为您正在寻找此资源 - https://github.com/concourse/git-resource
它会自动检查您的 git 存储库中的任何新提交,您可以基于此运行其他作业。
示例 pipeline.yml:
resources:
- name: git-repo
type: git
source:
uri: git@github.com:concourse/git-resource.git
branch: master
private_key: {{GIT_KEY}}
jobs:
- name: run-on-new-commit
- get: git-repo
trigger: true
- task: do-something-else
大厅资源通常每分钟左右拉出任何新版本。每当此频率不适合您的需要时,您可以使用资源check_every
属性对其进行修改。但是低于1m
(一分钟)的值通常被认为是激进的。Github 为 API 调用实施配额,当您有许多管道时,您不希望它们失败,因为您已经达到了一些配额限制。
如果您希望 Concourse立即对管道资源的已发布新版本做出反应,则需要反转模式。不是 Concourse 以某个定义的频率拉取任何新版本,而是开始向 Concourse 推送一些新版本将被拉取的信息。这种反向“推送”模式涉及每当在资源上创建新版本时触发“资源检查”。
每个 Concourse 资源都可以使用webhook_token
resource 属性启用资源检查触发 URL 。此 URLwebhook_token
在其查询字符串中包含秘密,并且应该仅接收POST
HTTP 请求。
借助 Github 存储库,您可以使用Github 工作流POST
访问此 URL,这依赖于来自市场的标准 Github 操作(推荐,首选)或Github webhook(第二选择)。
您需要在.github/workflows
Github 存储库的文件夹中提交和推送 YAML 文件,以便定义您的工作流程。有关详细示例,请参阅“触发 Concourse 资源检查”操作的文档。这非常简单,因为只需要配置五个简单的输入。
使用此替代方法,您可以在存储库中手动设置 Github webhook。URL 取决于要触发立即检查的资源,因此您无法在您的 Github 组织级别设置它。以明文形式附加到为 webhook 设置的 URL的webhook_token
秘密,不能存储为 Github 秘密。Github webhook 不支持获取任何 Github 机密。
如果您厌倦了手动设置 webhook,可以使用github-webhook
资源进行自动设置。在Credhub 资源webhook_token
的帮助下,您甚至可以在 Credhub 中的秘密发生变化时触发 webhook 重新创建。我已经完成了一些实现这个想法的工作代码,请参阅那些示例作业和那些示例资源定义。
但我绝对推荐使用带有“Trigger Concourse 资源检查”操作的 Github 工作流作为首选。