回购中的Jenkinsfile与代码不同

时间:2019-06-10 19:56:54

标签: gitlab jenkins-pipeline

目标:所有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,则会收到相同的错误消息

1 个答案:

答案 0 :(得分:0)

我通过在签出第二个仓库之前更改目录来解决了这个问题。

steps { 
                updateGitlabCommitStatus name: 'jenkins', state: 'running'
                dir ('repo') {                    
                git branch: "${gitlabSourceBranch}", credentialsId: 'ABCDEFG', url: "${gitlabSourceRepoURL}"  

1-使用jenkinsfile签出仓库

2-jenkinfile更改目录

3-使用要构建的代码签出仓库

此解决方案会导致其他一些小问题,例如来自错误存储库的更改日志(jenkinsfile存储库),但我可以解决。

比创建共享库还快(这是更好的解决方案)