【发布时间】:2017-03-06 13:49:55
【问题描述】:
我正在使用 Jenkins Multiple SCM 插件将三个 git 存储库检出到我的 Jenkins 工作中的三个子目录中。然后我执行一组命令来构建一组工件,其中包含来自所有三个存储库的信息和代码。
Multiple SCM 现已折旧,文中建议移至管道。我试过了,但我不知道如何让它工作。
这是我有兴趣从我的 Jenkins 工作目录的顶层看到的目录结构:
$ 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-directory 行为。
【问题讨论】:
-
Jenkins 让这个功能变得如此困难,与 TeamCity 相比,它就像锤子和凿子,让这个功能如此优雅。
标签: git jenkins jenkins-pipeline