到 Git 的 Concourse Webhook

标签 concourse concourse-git-resource

环境:

BitBucket
Concourse 3.14.0

想知道是否可以使用 Git webhook 配置 Concourse 管道,这将检查是否发生了新的提交,并且会基于该触发器触发管道构建?我看了https://concourse-ci.org/resources.html#resource-webhook-token ,但它没有告诉我如何从 Concourse 获取 webhook token ,以及它是否支持我的要求。
非常感谢任何反馈。

最佳答案

Concourse 资源通常每分钟左右拉取任何新版本。每当此频率不适合您的需要时,您可以使用 the check_every resource property 进行修改。 .但是低于 1m(一分钟)的值通常被认为是激进的。 Github 为 API 调用实现配额,当您有许多管道时,您不希望它们因为达到了一些配额限制而失败。

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

触发即时资源检查

每个 Concourse 资源都可以使用 the webhook_token resource property 启用资源检查触发 URL .此 URL 在其查询字符串中包含 webhook_token secret ,并且应该仅接收 POST HTTP 请求。

使用 Github 存储库,您可以使用 Github 工作流POST 到此 URL,依赖于来自市场的标准 Github 操作(推荐,首选),或Github webhook(第二选择)。

使用 Github 工作流程

您需要在 Github 存储库的 .github/workflows 文件夹中提交并推送一个 YAML 文件,以便定义您的工作流程。请参阅 “Trigger Concourse resource-check” action 的文档有关详细示例。这非常简单,因为只需要配置五个简单的输入。

使用 Github 网络钩子(Hook)

使用此替代方案,您可以在您的存储库中手动设置 Github webhook。该 URL 取决于要触发立即检查的资源,因此您无法在 Github 组织级别设置它。 webhook_token secret 以明文形式附加到为 webhook 设置的 URL,不能存储为 Github secret 。 Github webhook 不支持获取任何 Github secret 。

如果您厌倦了手动设置 webhook,可以使用 github-webhook resource 进行自动设置。 .借助 Credhub resource,您甚至可以在 Credhub 中的 webhook_token secret 更改时触发 webhook 重新创建。 .我已经完成了一些实现这个想法的工作代码,请参阅 those example jobsthose example resource definitions .

但我绝对推荐使用 Github 工作流程和 “Trigger Concourse resource-check” action作为首选。

关于到 Git 的 Concourse Webhook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51310079/

相关文章:

concourse - 如何在大厅中制作 self 更新管道

concourse - 如何使用特定用户运行 Concourse CI 作业任务?

git - 大厅 git 资源;访问 Git 标签以在 docker-image put 上使用

大厅:资源脚本 '/opt/resource/check []' 失败:退出状态 128

docker - 如何在Concourse CI中从git-resource构建docker-compose容器?

docker - 简单管道的大厅管道失败

git - Concourse:使用 HTTP 请求触发作业

docker - Concourse 无法访问 Docker 注册表

concourse - 如何测试大厅自定义资源类型?