我正在使用 Jenkins Multiple SCM 插件将三个 git 存储库检出到我的 Jenkins 作业中的三个子目录中。然后,我执行一组命令来构建一组包含从所有三个存储库中提取的信息和代码的工件。
多个 SCM 现已弃用,文中建议转向管道。我尝试过,但我不知道如何让它发挥作用。
以下是我有兴趣从 Jenkins 作业目录顶层看到的目录结构:
$ ls
Combination
CombinationBuilder
CombinationResults
这三个子目录中的每一个都签出了一个 git 存储库。对于多个 SCM,我使用了 git,然后添加了“签出到子目录”行为。这是我对管道脚本的尝试:
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 命令似乎在工作区的顶层目录执行(这有一定道理),并且根据语法,似乎没有签出到子目录的行为。
您可以使用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')
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)