场景是这样的,有两台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大法:

def gettags = "git ls-remote -t git@git.coding.net:doabc/app-abc.git".execute()  
def tags = []  
def t1 = []  
gettags.text.eachLine {tags.add(it)}  
for(i in tags)  
    t1.add(i.split()[1].replaceAll('\\^\\{\\}', '').replaceAll('refs/tags/', ''))
t1 = t1.unique()  
return t1  

注意上面,groovy和git的证书需要都事先配好。

comments powered by Disqus