我正在使用Jenkins Multiple SCM插件将三个git存储库检出到Jenkins作业的三个子目录中。然后,我执行一组命令,以使用从所有三个存储库中提取的信息和代码构建一组工件。
现在已弃用多个SCM,并且文本建议移至管道。我尝试过,但是我不知道如何使它工作。
这是我感兴趣的从詹金斯工作目录的顶层看到的目录结构:
$ ls Combination CombinationBuilder CombinationResults
这三个子目录中的每一个都有一个单独的git repo签出。对于Multiple 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命令似乎在工作空间的顶级目录中执行(这在一定程度上是有意义的),并且根据语法,似乎也没有“ checkout-to-sub-子目录”行为。
您可以使用以下dir命令在子目录中执行管道步骤:
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') }