使用Jenkins管道检查多个git repos到同一个作业

我正在使用Jenkins Multiple SCM插件,在Jenkins工作中检出三个git仓库到三个子目录.然后,我执行一组命令来构建一组文件,其中包含从所有三个存储库中获取的信息和代码.

现在多个SCM已折旧,文本建议移至管道.我试过,但是我不知道如何使它工作.

以下是我从Jenkins工作目录的顶层感兴趣的目录结构:

$ls
Combination
CombinationBuilder
CombinationResults

这三个子目录中的每一个都有一个git repo签出.使用多个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')
}

转载注明原文:使用Jenkins管道检查多个git repos到同一个作业 - 代码日志