конвейер Дженкинса, удаление из подзадачи

#jenkins #jenkins-pipeline

#дженкинс #конвейер Дженкинса

Вопрос:

У меня есть отдельный build конвейер, который используется jenkinsfile для сборки кода. Я запускаю его из deploy конвейера и хочу получить результаты сборки.

Причина этого в том, что разработчики могут определять этапы сборки, но развертывание находится вне контроля.

Вот пример кода в jenkins job builder :

 - job:
    name: Build and Deploy
    project-type: pipeline
    dsl: |
      node {
        stage('Build') {
          # that job does stash inside a jenkinsfile
          build job: "Build"
          sh 'cp -rv "../Build/dist/" ./' # this is a workaround
          stash includes: 'dist/*.zip', name: 'archive'
        }
        stage('Deploy') {
          unstash 'archive'
          sh "..."
        }
      }
 

Итак, как я могу unstash редактировать код stash в подзадаче?

PS: есть также обходной путь с артефактами:

В подзадаче:

 archiveArtifacts artifacts: '*.zip', fingerprint: true
 

основной DSL:

     dsl: |
      node {
        def build_job_number = 0
        def JENKINS = "http://127.0.0.1:8080"
        stage('Build') {
          def build_job = build job: "Build"
          build_job_number = build_job.getNumber()
        }
        stage('Deploy') {
          sh "wget -c --http-user=${USER} --http-password=${TOKEN} --auth-no-challenge ${JENKINS}/job/Build/${build_job_number}/artifact/name.zip"
          sh "..."
        }
      }
 

Проблема здесь в том, что требуется токен API.

Ответ №1:

Если вы пойдете с archiveArtifacts ним, вы можете использовать copyArtifacts его в качестве дополнения.

Насколько я знаю stash unstash , они работают только в рамках одного и того же задания, поэтому другим вашим вариантом было бы поставить галочку Preserve stashes from completed builds в конфигурации конвейера, чтобы вы могли использовать их повторно.