Как запустить параллельные задания из карты внутри функции groovy? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть jenkinsfile, который вызывает функцию из groovy:

jenkinsfile:

pipeline {
  agent none
  environment {
  HOME = '.'
  }
  stages {
    stage("initiating"){
      agent {        
        docker {
          image 'docker-image'
        }
      }
      stages {
        stage('scanning') {
          steps {
            script {
              workloadPipeline = load("Pipeline.groovy")
              workloadPipeline.loopImages1(Images)
            }
          }     
        }
      }
    }
  }
}

groovy функции:

def loopImages1(Images){
  Images.each { entry ->
    parallel {
      stage('test-' + entry.key) {
        catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {

          script {
            sh """
              docker run -d $entry.value
            """
          }
        }
      }
    }
  }
}

Images возвращает карту, примерно так:

image-1 : 123.dkr.ecr.eu-west-1.amazonaws.com....
image-2 : 123.dkr.ecr.eu-west-1.amazonaws.com....
image-3 : 123.dkr.ecr.eu-west-1.amazonaws.com....

И я пытался запустить его с помощью parallel , который в этом случае должен запускать 3 задания параллельно, но он дает мне следующее сообщение об ошибке:

java .lang.IllegalArgumentException: ожидаются именованные аргументы, но есть org.jenkinsci.plugins.workflow.cps. CpsClosure2@19027e83

Что мне нужно изменить, чтобы это работало? Судя по тому, что я прочитал, ему нужна карта в качестве входных данных, которую я уже даю.

1 Ответ

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

Если у кого-то есть аналогичный вопрос, вот ответ, который решил мою проблему:

groovy функция:

def loopImages1(Images){
  **def parallelStage = [:]**
    Images.each { entry ->
      **parallelStage[entry] = {**
        stage('test-' + entry.key) {
          catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {

            script {
              sh """
                docker run -d $entry.value
              """
            }
          }
        }
      }
    }
  **parallel parallelStage**
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...