Копирование файлов между рабами jenkins в конвейере - PullRequest
2 голосов
/ 04 мая 2020

Наша цель состоит в том, чтобы разделить наш конвейер с несколькими агентами.

У нас есть подчиненный, называемый slave1, который имеет единственную цель извлечения на git и создает исполняемые файлы.

В конце концов, когда slave1 завершает работу, мы хотим передать его выходные данные slave2, единственной целью которого является тестирование исполняемого файла slave1.

Обратите внимание, что идея здесь не в том, чтобы разделить задания, а получить файлы в тот же конвейер.

Вот пример Jenkinsfile, который будет иметь больше смысла:

pipeline
{
    agent
    {
        label 'slave1'
    }
    stages
    {
        stage("Initialize & Build")
        {
            steps
            {
                script
                {
                    println("Im starting the pipeline with slave1!")

                    // Builds Files
                    // ....

                    // Has many files that needs to pass to slave2
                }
            }
        }
        stage("Execute & Test")
        {
            agent
            {
                label 'slave2'
            }
            steps
            {
                script
                {
                    println("Im in the new slave - slave2!")

                    // How does this slave get the files?
                }
            }
        }
    }
}

Как можно передавать эти файлы между агентами?

Я читал об артефактах, но похоже, что его цель - вернуть объекты из работы, это не обязательно то, что нужно.

1 Ответ

0 голосов
/ 04 мая 2020

Если оба ваших агента находятся на linux серверах, вы можете просто скопировать выходные данные сборки агента 1 агенту 2. Кроме того, сначала вам нужно установить sh без пароля S SH соединение между этими двумя агентами. .

Вот пример.

pipeline
{
    agent
    {
        label 'slave1'
    }
    stages
    {
        stage("Initialize & Build")
        {
            steps
            {
                script
                {
                    println("Im starting the pipeline with slave1!")

                    // Builds Files
                    // ....
 // option 1: copy files in the workspace of agent 2.
                    scp $WORKSPACE/build_output/* <user>@agent2:/home/<user>/workspace/<job_name>/
// option 2: copy files to any known location of agent 2
                     scp $WORKSPACE/build_output/* <user>@agent2:/<destination_path>



                }
            }
        }
        stage("Execute & Test")
        {
            agent
            {
                label 'slave2'
            }
            steps
            {
                script
                {
                    println("Im in the new slave - slave2!")

                    //option 1
                         dir($WORKSPACE) {
                               // Test execution steps
                   }
                     // option 2
                          dir(<destination_path>) {
                              // Test execution steps
                   }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...