4

两台不同系统上Jenkins的联动

 7 months ago
source link: https://bajie.dev/posts/20240124-jenkins_two_server/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

两台不同系统上Jenkins的联动

2024-01-24 2 分钟阅读

场景是这样的,有两台jenkins。一台是正常安装在linux上的,另外一台是在macos上的。

在macos上的这台,装了有xcode和android studio,负责ipa和apk的自动打包。

而在linux上jenkins则是主jenkins,负责很多项目的打包。

这样两台的目标就都很明确,麻烦的是需要来回登录来构建项目,那么有没有方法从第一台上直接调用第二台的项目进行构建呢?

image-20240124100017245

当然可以,直接发个带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 [email protected]: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的证书需要都事先配好。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK