Как перебрать параметр массива в groovy - PullRequest
0 голосов
/ 15 октября 2019

Скажем, если у нас есть несколько envs, таких как dev1, dev2, dev3, qat1, qat2, stg, prod и я настроили параметры множественного выбора в Jenkins Pipeline. Я сохранил выбранные параметры в массиве

env = [ dev1, dev3, qat2] 

Как перебрать эти параметры один за другим в функции ниже

def DockerPush() {

def artifactory_repo_dev1 = "artifactory.dev1.com"
def artifactory_repo_dev3 = "artifactory.dev3.com"
def artifactory_repo_qat2 = "artifactory.qat2.com"


//Docker Tag
sh "docker tag " + "docker-example" + " " + "artifactory_repo_$env" + ":" + version


//Docker Push to Artifactory
    sh "docker push " + "artifactory_repo_$env" + ":" + "${version}"  
}

, чтобы у меня не было дублирования кода. В настоящее время я использую один параметр выбора и операторы if else для всех выбранных сред, в которых мой код содержит около 500 строк. Я хочу минимизировать код с помощью цикла for и повторять выбранные параметры по одному.

1 Ответ

0 голосов
/ 15 октября 2019

Не используйте локальные переменные для такой задачи (обратите внимание, что это можно заставить работать, как вы хотите, но ИМХО это способ запутаться).

Вместо этого используйте карту для хранения отношениямежду ключом среды и URL.

Например,

def chosenEnv = 'env1'
def envToUrl = [env1: "some.url.for.env1.com"]
def url = envToUrl[chosenEnv]

Если ваши URL-адреса напрямую связаны с именем env, вы даже можете создать карту:

def envToUrl = ["env1"].collectEntries{ [it, "some.url.for.${it}.com"] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...