jenkins - 使用 github webhooks 构建参数化 jenkins
问题描述
我使用带有“此项目已参数化”选项形式 jenkins 作业配置的选择参数配置了我的 jenkins 作业(自由式)和 dev/test/prod 环境。
我在我的 github soouce 中将 webhook 设置为https://myjenkins/github-webhook/。当我对 github repo 进行更改时,它总是使用“dev”环境选项触发 jenkins 中的构建。如何根据我的要求选择其他环境?
我用谷歌搜索但没有找到正确的答案。有人能帮我吗?
解决方案
简短的回答
使用一些分支策略并在您的工作中执行以下操作:
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 分支是在生产中部署的候选。
- 任何其他从简单到复杂的自动化流程。
你的想象力是你唯一的限制。
有用的链接:
推荐阅读
- interface - 用于指定字段映射的标准格式
- javalite - 对 JavaLite 项目的 Swagger 支持
- java - 如何使用 java 测试 VXML 代码 (JUnit)
- git - 如何在 sourceTree 中导入项目文件夹
- python - 限制登录用户在不退出登录的情况下访问登录和注册的首页
- c# - 如何重构方法
- jquery - 引导程序 4 和加载程序未显示的 jquery show 方法问题
- r - 在 R 中复制 pdf 文件列表并在粘贴时动态重命名
- python - 如何修复 virtualenv 中的“符号链接级别过多”错误?
- winforms - 我想在输入数据后将datagridview转换为ini文件