前言:平时都是登录jenkins进行构建Job,但我不不想或其它集成的时候用到,所以弄了个远程触发Job构建,是挺不错的。
当前也有Python 等语言的sdk,亦可直接使用。
场景:
- 想开放Job让别人构建,但又不想给别人登录jenkins,触发同步数据或其它Job。
- 结合python自动化写点代码丰富一下,实现构建自由(反正实现不了财务自由)。
- 等等
一、jenkins 全局安全设置
1.Configure Global Security-CSRF Protection 勾选兼容 (全局安全设置)
解释:一些 HTTP 代理过滤掉默认 crumb issuer 用于计算 nonce 值的信息。
如果 HTTP 代理位于您的浏览器客户端和 Jenkins 服务器之间,并且您在向 Jenkins 提交表单时收到 403 响应,则选中此选项可能会有所帮助。使用此选项使 nonce 值更容易伪造。
出现 403 的时候不妨看看是不是没勾选?
2.API token生成
说明:用来远程调用的认证合法,否则需要密码。推荐使用api token来远程调用构建。
API 令牌提供了一种进行经过身份验证的 CLI 或 REST API 调用的方法。有关更多详细信息,请参阅我们的 wiki。
与每个令牌关联的用户名是您的 Jenkins 用户名。
保持 API 令牌安全的一些良好做法是:
- 为每个应用程序使用不同的令牌,以便在应用程序受到威胁时,您可以单独撤销其令牌。
- 每 6 个月重新生成一次令牌(取决于您的上下文)。我们显示一个关于代币年龄的指标。
- 像保护您的密码一样保护它,因为它允许其他人像您一样访问 Jenkins。
二、远程构建
1.复制job的url,如下图编辑job中能看到示例,但不用保存。
JENKINS_URL/job/TestJob/build?token=TOKEN_NAME or /buildWithParameters?token=TOKEN_NAME
Optionally append &cause=Cause+Text to provide text that will be included in the recorded build cause.
2.postman选择 Auth
输入账号和密码即可,请求响应码为201正常。
3.也可以使用curl请求,-u 账号:apiToken
curl -I -X POST \ http://域名:端口/job/TestJob/build -u test:11b112d9cf514da3ce8f4d38928d79b592
test:为用户名
11b112d9cf514da3ce8f4d38928d79b592:为apiToken
便可以看到jenkins在构建