不用打开界面,在命令行完成代码部署(jenkins)

问题

有时候,在本地提交完代码,接着需要将代码部署到测试坏境。

一般部署过程都需要自己登录到某个部署平台,手动去触发。(不包括有些可能直接push完代码就自动触发部署了)。

虽然这样手动触发操作很简单,但每次都打开网页,找项目,去操作,也不免有些麻烦。

思考

能不能在提交完代码,就接着在命令行,完成部署呢?

简单实现

这里以 jenkins 为例,说说我的处理过程。

1、打开 jenkins 中你要远程部署的项目界面,点击配置。
在这里插入图片描述
2、在配置中找到“构建触发器”栏目,在“身份验证令牌”中填入一段字符串。下面的小字是访问链接的拼写规则,原来远程构建触发器是通过 HTTP 协议访问链接实现的,接下来说说拼写规则。记得先将这步的修改应用,保存。
在这里插入图片描述
3、完成了这些,我们来说触发链接的拼写规则:

参数说明:
JENKINS_URL: jenkins 的域名或ip + 端口号
PEOJECT_NAME:项目名称
TOKEN_NAME:上一步配置的字符串

  • 不带参数:
JENKINS_URL/job/PROJECT_NAME/build?token=TOKEN_NAME
  • 带参数:
JENKINS_URL/job/PROJECT_NAME/buildWithParameters?token=TOKEN_NAME&KEY=value

4、拿着第三步拼好的链接,直接在浏览器中访问。

如果返回 201 状态码,恭喜已经成功触发部署了。
如果返回 403 状态码,那么可能你的 jenkin 开启了 CSRF 保护。
需要回到主界面 -> 系统管理 -> 全局安全配置 -> 找到 CSRF Protection 关掉就好了。

通过上面的简单操作,已经可以实现远程触发构建了,但是如果需要在命令行访问的话,我们还需要写一个简单的 shell 脚本。

#  你的 jenkins 用户名
user="USERNAME"
# 你的 jenkins 密码 
password="PASSWORD"

curl -u $user:$password 上面拼接好的URL

保存上面的脚本文件到自己的项目里,在 .gitignore 忽略掉,比如我保存到我的项目下并命名为 .publish

接下来测试下好不好用,在项目目录下,直接执行 sh .publish,然后回到 jenkins 项目界面,发现项目已经在部署了。

优化

经过上面的处理,已经完成用命令行远程触发构建。但是有一个小缺憾,就是触发部署后,没有状态返回。这个我怎么知道部署成功了没有?

我们先整理思路。

因为触发部署的时候并没有返回什么可利用的信息,所以要想拿到部署过程中的状态返回,必须轮询 /api/json 接口,这个接口会返回部署的相关信息。

接口格式:

JENKINS_URL/job/PROJECT_NAME/api/json

接下来我们分析这个接口返回的信息,看看有什么可以利用的?

分析后发现,想要做显示进度肯定没戏了。但我们发现有这几个字段可以利用,来实现简单的状态判断。

这几个字段下都会自带一个数字 id。

lastBuild // 最后一次构建
lastCompletedBuild // 最后一次完成的构建
lastSuccessfulBuild // 最后一次成功的构建

在构建开始 lastBuild 会生成一个新 id,这个时候 lastCompl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值