Jenkinsfile в репо отличается от кода - PullRequest
0 голосов
/ 10 июня 2019

Цель: иметь один Jenkinsfile для всех заданий jenkins (около 100) - «Один файл, чтобы управлять ими всеми»

Что я пробовал:

Создать задание jenkins с 2 репо:

1 - {GIT_URL_1}: репозиторий, где находится Jenkinsfile

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 - извлечениесначала репо, затем файл jenkins, я получаю то же сообщение об ошибке

1 Ответ

0 голосов
/ 20 июня 2019

Я решил проблему, изменив каталог перед оформлением второго репо.

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

1 - оформить репо с помощью jenkinsfile

2 - jenkinfile сменить каталог

3 - оформить репо с кодом для сборки

Это решение приводит к другим незначительным проблемам, таким как, журнал изменений из неправильного репозитория (репозиторий jenkinsfile), но я могу с этим справиться.

Также быстрее, чем создавать общую библиотеку (что является лучшим решением)

...