【发布时间】:2017-06-07 15:13:03
【问题描述】:
我正在尝试通过 Jenkins(构建、部署)和 VSTS(源代码控制)实现持续交付。这是所需的工作流程:
- 开发人员从 master 分支,进行更改,创建拉取请求
- 另一位开发者审核 PR 并最终将其合并到 master 中
- 某些系统(Jenkins 或 VSTS)检测到 PR 已合并到 master 中,并且...
- 增加存储在 repo 文件中的版本号
- 将版本更改提交回 master
- 构建
- 部署
我在 VSTS 中使用服务挂钩来检测合并以掌握并执行 Jenkins 任务。 VSTS 有 3 个我可以使用的钩子:
- 构建完成
- 代码推送
- 已创建拉取请求合并提交
我的印象是第三个选项只会在 PR 被合并时出现,但事实并非如此。任何对分支的额外提交,当它与 PR 关联时都会触发钩子。这会导致一堆不必要的部署。
我想我可以让 Jenkins 检测 VSTS 中的变化。有一个“轮询 SCM”选项,它采用类似 cron 的时间表。完全令人困惑的是,我似乎无法配置每 X 分钟将轮询的确切内容(哪个 repo,哪个分支)。
只有当 PR 合并到 master 时,我有哪些选项可以触发 Jenkins 任务?我会使用 VSTS“代码推送”服务挂钩,但它会进入无限循环,因为 Jenkins 在增加版本时会推送到 master。
【问题讨论】:
标签: jenkins azure-devops