场景是这样的,有两台jenkins。一台是正常安装在linux
上的,另外一台是在macos
上的。
在macos上的这台,装了有xcode和android studio,负责ipa和apk的自动打包。
而在linux上jenkins则是主jenkins,负责很多项目的打包。
这样两台的目标就都很明确,麻烦的是需要来回登录来构建项目,那么有没有方法从第一台上直接调用第二台的项目进行构建呢?
当然可以,直接发个带Token的url到第二台就可以。
这个不是本文的重点,本文重点,源码是Git的build过程,jenkins装了Git parameter插件后支持选tag进行building。
这样如果两台都这么来一下,实际是在两台都git check了一下,然后开始build,这对于第一台来说,毫无必要。
第一台主jenkins的任务就是看看git项目中都有什么tag,然后把tag发链接给第二台即可,没必要check的。
而第二台也不去看tag,直接从git中checkout出第一台传过来的tag版本,进行构造,这样最省资源。
那么,怎么让第一台只查看tag呢?
万能的groovy大法:
1def gettags = "git ls-remote -t git@git.coding.net:doabc/app-abc.git".execute()
2def tags = []
3def t1 = []
4gettags.text.eachLine {tags.add(it)}
5for(i in tags)
6 t1.add(i.split()[1].replaceAll('\\^\\{\\}', '').replaceAll('refs/tags/', ''))
7t1 = t1.unique()
8return t1
注意上面,groovy和git的证书需要都事先配好。