背景
- 之前写了 python 脚本来实现 ios 打包并上传到蒲公英,但是因为公司产品比较多,维护成本也随之增大,最后 python 脚本需要传递 9 个参数,实在是恐怖。
- 于是下决心将 ios 的打包转移到 fastlane 上,配好之后体验确实不错,自己需要配置的东西比较少,Jenkins 的 job 瞬间间接了不少。
问题描述
- 之前自己用 python 脚本,把包上传到蒲公英之后,因为整个过程都是可控的,所以结合【set build description】,很容易就可以将下载包的二维码展示到 Jenkins 上面。
- 但是改用 fastlane 之后,所有的操作都是工具自己去完成的,上传到蒲公英之后的 url 等信息也拿不到。但是如果不将蒲公英对应包的链接展示在 Jenkins 上,那会非常不方便,开发或者产品想要包的时候,还需要去蒲公英找包。
解决方案
- 查看 build console log 的时候发现,其实 fastlane 的日志里面已经将上传包之后的链接打印出来。比如:
[11:15:12]: Upload success. Visit this URL to see: https://www.pgyer.com/TVow
复用之前的脚本
【set build description】插件
https://www.pgyer.com/TVow[emdxxxxxxxxxxxxxx (后面会有和颜色相关的一些字符,很不爽)
- 所以通过链接,并不能直接跳转到蒲公英,尝试了多种匹配方式,无果。
groovy 脚本实现
- 没办法,最后想到既然【set build description】可以实现改变 description,那么必然是有什么方法可以调用的。于是在网上查到可以通过 groovy 实现,于是通过【Groovy PostBuild】插入一段 Groovy 脚本。
def m = manager.getLogMatcher("^.*Visit this URL to see: (.*)\$")
if(m != null && m.matches()) {
log_str = m.group(1)
log_str = log_str.substring(0, 26)
def currentBuild = Thread.currentThread().executable
def description = "<a href='${log_str}'>jump to pgyer</a>"
currentBuild.setDescription(description)
}
- 上面脚本中截取字符串时,substring(0, 26) 这里 26 是写死的,因为所有的蒲公英连接的长度是一定的。最终实现了打包之后可以直接通过链接跳转到蒲公英:
后记
- 通过 Groovy 来操作 Jenkins build 过程应该有很多玩法,我还没展开去了解。感兴趣的同学可以自己了解以满足自己工作中的需求。