目标:所有jenkins作业都有一个Jenkinsfile(大约100个)-“一个文件可以全部统治”
我尝试过的:
使用2个仓库创建一个詹金斯工作:
1-{GIT_URL_1}:回购Jenkins文件在哪里
2-{GIT_URL_2}:回购包含要构建的代码
Jenkinsfile
stage('Checkout'){
when {
not {
anyOf {
branch 'master';
branch 'develop';
branch 'release'
}
}
}
steps {
// dir ('repo') {
updateGitlabCommitStatus name: 'build', state: 'running'
git "${GIT_URL_1}"
checkout changelog: true, poll: true, scm: [
$class: 'GitSCM',
branches: [[name: "${gitlabSourceBranch}"]],
doGenerateSubmoduleConfigurations: false
load 'Jenkinsfile'
}
错误信息
错误:/ var / lib / jenkins / workspace / app / myapp @ script / Jenkinsfile没有 找到
如果我交换GIT_URL位置-首先检出存储库,然后检出jenkinsfile,则会收到相同的错误消息
答案 0 :(得分:0)
我通过在签出第二个仓库之前更改目录来解决了这个问题。
steps {
updateGitlabCommitStatus name: 'jenkins', state: 'running'
dir ('repo') {
git branch: "${gitlabSourceBranch}", credentialsId: 'ABCDEFG', url: "${gitlabSourceRepoURL}"
1-使用jenkinsfile签出仓库
2-jenkinfile更改目录
3-使用要构建的代码签出仓库
此解决方案会导致其他一些小问题,例如来自错误存储库的更改日志(jenkinsfile存储库),但我可以解决。
比创建共享库还快(这是更好的解决方案)