背景:项目ios客户端测试环境原有job配置是:build完成后,curl发布文件到蒲公英平台然后给钉钉群发通知
痛点:1.群消息的蒲公英链接是固定的,默认显示最新的构建结果,2.网站的历史结果列表展示的是蒲公英自增的version number,不是jenkins build number。想找历史版本非常不方便
我的需求:群消息中引用curl返回值变量,直接点击群消息链接可以进入到对应版本(文件发布到蒲公英后会返回对应信息,观察发现对应包的url都是蒲公英域名+buildKey。所以只要取response里“buildKey”的value作为变量组合就可以了)
预先想到的三条方法:
1.jenkins shell 不动,取蒲公英API结果设置成新变量,脚本引用新变量(推荐)
2.修改jenkins流水线顺序,先用蒲公英插件,后用钉钉插件(插件在构建结束后才能使用,会影响原本shell之后的操作,修改风险大)
3.以上都不好用,修改蒲公英设置: “使用app自带build号作为build version”,每次自己点进对应version(不太方便)
最终实现步骤:
1. 定义新变量,存放curl返回的response
result=$(curl …)
2. 使用jq解析变量json,只留目标值
buildkey=$(echo ${result} | jq -r '.data.buildKey')
2.1 配置环境:给跳板机安装jq
mac os 安装jq brew install jq
参考:https://blog.csdn.net/shenhonglei1234/article/details/113821585
Centos 安装jq:
chmod +x ./jq
cp jq /usr/bin
yum install -y jq
2.2 jq命令解析json
buildkey=$(echo ${result} | jq -r '.data.buildKey')
多层嵌套;(引申:取第n个json body)
使用-r 参数去除引号:https://blog.csdn.net/VIP099/article/details/125815615
3. 组合URL,域名+buildKey
"messageUrl": "https://www.pgyer.com/'$buildkey'"
注意shell语法在双引号里加变量需要使用单引号括起来(小踩一坑)
Jenkins+蒲公英使用可以参考文档:https://www.pgyer.com/doc/view/faq_dev