背景
配置好jenkins后可以通过点击构建发布项目,但一个很普遍的需求是当代码push到git的master分之后,系统自动发布。gitlab和gogs都有webhooks可以使用。今天讲的方法,不仅可以适用于webhooks也可以通过脚本等其他方式直接触发发布流程。
1 、创建token
主页面-people-点击用户-configure- add new token 添加一个token用于request的身份验证。
输入项即:TOKEN_NAME
点击生成:把生成的token值保存下来,别搞丢了。
2、配置jenkins任务
根据提示勾选远程调用触发器:
格式: JENKINS_URL/job/<你的任务名>/build?token=<刚才生成TOKEN_NAME >
这里写令牌名字,在gogs里面配置密码达到验证效果
3、 触发jenkins任务
术语
- token-name:令牌名。比如:tomcat-bms
- token-value:令牌值。比如:11dd2232c5263bxx067xx9ff711da0a3b28
- 用户名:登录用户名,比如:admin。
- 密码:登录用户密码。比如:123
- jenkins-url:可以访问jenkins服务器web的地址+端口号。比如:102.33.233.12:8080
- job-name:任务名,其实就是创建发布的项目名 比如:bms-test3
上面几个术语本身意思都很简单,主要是为了后面说明的时候,不要混淆。拼接url的时候很重要。
方法1:
格式:
curl -u <用户名>:<用户密码> http://<jenkins-url+port>/job/<job-name>/build?token=<token-name>
比如:
curl -u admin:123456 http://102.33.233.12:8080/job/bms-test3/build?token=tomcat-bms
方法2:
格式
curl -X POST http://<用户名>:<token-value>@<jenkins-url:port>/job/<job-name>/build?token=<token-name>
比如:
curl -X POST http://admin:11dd2232c5263bxx067xx9ff711da0a3b28@102.33.233.12:8080/job/bms-test3/build?token=tomcat-bms
上面两种方法本人都验证过可以直接触发发布任务,通过在linux命令行直接执行。这很重要,他代表了如何通过最朴素的方法触发发布任务,没有安装任何插件。
4 Gogs或GitLab如何绑定webhook触发任务?
打开仓库设置,配置webhooks选择gogs.唯一需要填写的就是推送地址,这个地址格式参照上面格式2.
http://<用户名>:<token-value>@<jenkins-url:port>//job/<job-name>/build?token=<token-name>
保存后,点击测试推送时有可能没效果,建议还是通过真实的推送测试。当你有代码push到该仓库的master分支时,页面里就能看到新的发布任务已经启动。
总结
以上就是脚本触发和webhooks方式,去启动jenkins任务的方法。这个方法最大的优点:
- 不需要安装任何插件,jenkins本身支持脚本触发
- 可以适用任何git仓库的webhook
- curl都可以触发,还有什么业务场景无法嵌入呢?