@Eldalex

Как запустить jenkins pipeline из склонированного репозитория?

Коллеги, помогите решить задачку. есть jenkins pipeline. первым шагом он клонирует гит репозиторий. в этом репозитории лежит jenkinsfile. вторым шагом мне надо запустить этот jenkinsfile на выполнение.
если с первым шагом проблем нет, то со вторым начинаются
pipeline {
    agent none
    stages {
        stage('Clone Repository') {
            agent{
                node{
                    label 'node1'
                }
            }
            steps {
                dir('master'){
                    git url: "https://test.ru/tests.git", credentialsId: 'gitlab.login.password'
                }
            }
        }
        stage('Run Pipeline from Cloned Repository') {
            agent{
                node{
                    label 'node1'
                }
            }
            steps {
                // script {
                //     def Jfile= pwd() + "/master" + "/Jenkinsfiles/Jenkinsfile"
                //     def customWorkspace = build job: "${Jfile}", propagate: false
                //     if (customWorkspace.resultIsBetterOrEqualTo(Result.FAILURE)) {
                //         error("Failed to run the pipeline from the cloned repository")
                //     }
                // }
                script {
                    def customWorkspace = pwd() + '/master'
                    def jenkinsfile = load "${customWorkspace}/Jenkinsfiles/Jenkinsfile"
                    jenkinsfile()
                }
            }
        }
    }
}


В приведённом примере две мои попытки запустить пайплайн из файла.
при закоменченном варианте происходит ошибка что item не найден, хотя файл на месте и команда cat спокойно выводит его в лог.
не закоменченный вариант заканчивается ошибкой: java.lang.IllegalStateException: Only one pipeline { ... } block can be executed in a single run.
Вообще возможно ли так вызвать?
Зачем такие сложности, если можно просто сказать Дженкинсу возьми файл из scm и выполни? Беда в том что по не выявленным пока причинам гит периодически глючит и отказывает в подключении. и соответственно пайп на первом же этапе(первичное клонирование репо) проваливается. я хочу разделить эти шаги, сделать чтобы этот пайп хранился в самом jenkins и не зависел от гита, клонировал нужный репо и запускал дальнейшее выполнение из jenkinsfile. в таком случае я могу контролировать процесс на любом этапе. отказал гит? повтори через минуту клонирование, провалился запущеный пайп перезапусти в случае каких то ошибок, либо останови выполнение.
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы