首页 > 解决方案 > 使用 github webhooks 构建参数化 jenkins

问题描述

我使用带有“此项目已参数化”选项形式 jenkins 作业配置的选择参数配置了我的 jenkins 作业(自由式)和 dev/test/prod 环境。

我在我的 github soouce 中将 webhook 设置为https://myjenkins/github-webhook/。当我对 github repo 进行更改时,它总是使用“dev”环境选项触发 jenkins 中的构建。如何根据我的要求选择其他环境?

我用谷歌搜索但没有找到正确的答案。有人能帮我吗?

标签: jenkinsgit-webhooks

解决方案


简短的回答

使用一些分支策略并在您的工作中执行以下操作:

IF BRANCH endsWith RELEASE
  deploy to testing
IF BRANCH endsWith SNAPSHOT
  deploy to dev
IF BRANCH == MASTER
  deploy to production
ETC ...

详细解答

当开发人员向 Github、Bitbucket 或 Gitlab 执行 git 推送时,这些平台会向您的持续集成服务器(jenkis、travis 等)发送一个 Json,其中包含与推送事件相关的大量信息。最重要的是:

  • 存储库名称
  • 目标分支名称:接收 git push 的分支
  • 提交消息
  • 提交作者

网络挂钩

然后在您的持续集成服务器中,您必须解析此 Json 以获取重要值。在 jenkis 中有几个插件,例如:通用 webhook、easy webhook 插件、github 插件等

在提取值之后,您可以使用分支名称、提交消息、提交作者等应用简单或复杂的验证。例如:

  • 只有 master 分支可以部署到生产环境
  • 只有名称以“snapshot”结尾的分支才能部署到开发环境:fix-issue-snapshot、feature-abc-snapshot 等
  • 如果提交消息包含“WIP”,则表示它仍在进行中或开发中,则不会进行部署。
  • 只会部署团队领导的推动
  • 如果在feature-100- development分支的源代码中通过了 build 、 unit test 和其他验证,则会创建一个名为feature-100- release的新分支,然后将该分支部署到测试环境。如果问答团队未检测到任何功能问题,则此 *release 分支是在生产中部署的候选。
  • 任何其他从简单到复杂的自动化流程。

你的想象力是你唯一的限制。

有用的链接:


推荐阅读