Concourse Webhook to Git



环境:

BitBucket
Concourse 3.14.0

想知道有没有可能用Git webhook配置Concourse管道,它会检查是否发生了新的提交,并根据该触发器触发管道构建?我看着https://concourse-ci.org/resources.html#resource-webhook令牌,但它并没有告诉我如何从Concourse获得webhook代币,以及它是否支持我的要求
非常感谢您的反馈。

Concourse资源通常每分钟左右提取一个新版本。每当这个频率不适合您的需求时,您可以使用check_every资源属性进行修改。但是低于1m(一分钟(的值通常被认为是具有攻击性的。Github为API调用实现配额,当你有很多管道时,你不希望它们失败,因为你已经达到了一些配额限制。

如果您希望Concourse立即对管道资源的已发布新版本作出反应,则需要反转此模式。不是Concourse以某个定义的频率拉取任何新版本,而是开始向Concourse推送要拉取一些新版本的信息。这种反向的"推送"模式涉及在资源上创建新版本时触发"资源检查"。

触发即时资源检查

每个Concourse资源都可以使用webhook_token资源属性启用资源检查触发URL。该URL在其查询字符串中包含webhook_token机密,并且应该只接收POSTHTTP请求。

使用Github存储库,您可以使用Github工作流,根据市场上的标准Github操作(推荐,第一选择(或Github webhook(第二选择(,将D_6POST连接到此URL。

使用Github工作流

您需要在Github存储库的.github/workflows文件夹中提交并推送一个YAML文件,以便定义您的工作流程。有关详细示例,请参阅"触发大厅资源检查"操作的文档。这非常简单,因为只需要配置五个简单的输入。

使用Github webhook

有了这个替代方案,您可以在存储库中手动设置Github网络挂钩。URL取决于要触发立即检查的资源,因此您不能在Github组织级别设置它。webhook_token秘密以明文形式附加到为webhook设置的URL中,不能作为Github秘密存储。Github webhook不支持获取任何Github机密。

如果您厌倦了手动设置webhook,则可以使用github-webhook资源进行自动设置。在Credhub资源的帮助下,每当Credhub中的webhook_token秘密发生变化时,您甚至可以触发webhook重新创建。我已经完成了一些实现这个想法的工作代码,看看那些示例作业和那些示例资源定义。

但我绝对建议使用Github工作流,并将"Trigger Concourse resource check"操作作为首选。

我想你正在寻找这个资源-https://github.com/concourse/git-resource

它会自动检查git存储库中的任何新提交,您可以在此基础上运行其他作业。

示例管道。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

最新更新