gpt4 book ai didi

git - 使用 Jenkins 管道将多个 git repos check out 到同一个作业中

转载 作者:IT王子 更新时间:2023-10-29 00:43:36 25 4
gpt4 key购买 nike

在我的 Jenkins 作业中,我使用 Jenkins Multiple SCM 插件将三个 git 存储库 check out 到三个子目录中。然后我执行一组命令来构建一组工件,其中包含从所有三个存储库中提取的信息和代码。

Multiple SCM现在贬值了,文中建议转向pipelines。我试过了,但我不知道如何让它发挥作用。

这是我有兴趣从我的 Jenkins 工作目录的顶层看到的目录结构:

$ ls
Combination
CombinationBuilder
CombinationResults

这三个子目录中的每一个都有一个单独的 git repo checkout 。对于 Multiple SCM,我使用了 git,然后添加了“ checkout 到子目录”行为。这是我对管道脚本的尝试:

node('ATLAS && Linux') {
sh('[ -e CalibrationResults ] || mkdir CalibrationResults')
sh('cd CalibrationResults')
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
sh('cd ..')
sh('[ -e Combination ] || mkdir Combination')
sh('cd Combination')
git url: 'https://github.com/AtlasBID/Combination.git'
sh('cd ..')
sh('[ -e CombinationBuilder ] || mkdir CombinationBuilder')
sh('cd CombinationBuilder')
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
sh 'cd ..'

sh('ls')
sh('. CombinationBuilder/build.sh')
}

但是,git 命令似乎在工作区的顶级目录中执行(这有一定道理),而且根据语法,似乎没有 check out 到子目录的行为。

最佳答案

您可以使用 dir 命令在子目录中执行管道步骤:

node('ATLAS && Linux') {
dir('CalibrationResults') {
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
}
dir('Combination') {
git url: 'https://github.com/AtlasBID/Combination.git'
}
dir('CombinationBuilder') {
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
}

sh('ls')
sh('. CombinationBuilder/build.sh')
}

关于git - 使用 Jenkins 管道将多个 git repos check out 到同一个作业中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40224272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com