Jenkins给集成打包带来了很多的便捷,让不懂开发的同事也能轻松的打包。但是对于开发和运维来说,可能还需要在打包之外做一些事情,以及批量的处理N个打包。
对于研发来说,重复是最难忍受的。Jenkins可以直接通过api来调用查看和处理各种请求。
网络上资料其实挺多的。也有直接一个脚本直接搞定部署的。知其然知其所以然,还是需要自己下功夫理解人家的脚本这样才能更好的用(先不说自己写了)。主要的就是三个步骤:
- 怎么登陆: JenkinsScriptConsole-Remoteaccess .|. RemoteaccessAPI-CSRFProtection
- 执行build:Running jenkins jobs via command line .|. Triggering Jenkins builds by URL
- 检查结果:checkJenkins.sh
crumb
首先来看看crumb是啥
1 2 3 4 5 6 7 8 9 10 11 12 |
|
这里CSRF 相当于jenkins做的一个权限控制,有两种方式处理:
方法一:取消控制
在菜单 系统管理 –> Configure Global Security 中调整设置: 取消 防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits) 的勾选。 如果还坚持要启用“防止跨站点请求伪造”,就需要先动态获取crumb。
方法二:获取token
- How to request for Crumb issuer for jenkins
- Calling a jenkins job with a bash script
- https://support.cloudbees.com/hc/en-us/articles/218889337-How-to-build-a-job-using-the-REST-API-and-cURL-
通过URL: crumbIssuer/api/json 获取token的键值,然后把它附加到build请求的HEADER。
命令行通过URL请求jenkins进行编译
- 使用shell脚本curl调用jenkins进行构建并判断是否构建成功
- Remote access API
- https://wiki.jenkins.io/display/JENKINS/Authenticating+scripted+clients
- https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Console
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
BuildName
- https://wiki.jenkins.io/display/JENKINS/Build+Name+Setter+Plugin
- https://stackoverflow.com/questions/42172320/how-to-set-the-jenkins-build-name-based-on-some-conditions
- https://stackoverflow.com/questions/30111298/how-to-use-build-name-setter-plugin
jenkins的使用案例
参考
API使用
- https://gist.githubusercontent.com/julianchurchill/8780920/raw/ae3ab0c120857b0fe69fe3718d720cb4ef94c4b8/checkJenkins.sh
- Triggering Jenkins builds by URL
登录/权限问题
- https://stackoverflow.com/questions/10698419/how-can-a-jenkins-user-authentication-details-be-passed-to-a-script-which-uses
- http://www.scmgalaxy.com/tutorials/ways-to-login-jenkins-using-command-line
- https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Console#JenkinsScriptConsole-Remoteaccess
- Calling a jenkins job with a bash script
- No valid crumb was included in the request in kubernetes
–END