Параметр Jenkins Active Choices с Docker для получения лазурных меток

String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true

Убедитесь, что вы понимаете, почему. Это потому, что сравнение == сравнивает только ссылки; equals() метод сопоставляет содержимое по символу.

Когда вы вызываете new для a и b, каждый получает новую ссылку, указывающую на "foo" в таблице строк. Ссылки разные, но контент один и тот же.

0
задан FrostX 17 January 2019 в 12:28
поделиться

1 ответ

Я успешно воспроизвел полный сценарий (т. Е. Требование «настроить задание Jenkins, которое получает все существующие теги из определенного репозитория реестра контейнеров Azure и делает их доступными для выбора в качестве параметров при создании задания») следуя указанному ниже процессу.

Только к вашему сведению, это достигается с помощью «параметра выбора», как показано на скриншоте ниже.

enter image description here

Для работы приведенного ниже сценария конвейера Jenkins необходимо

  1. установить Azure CLI в узле. где вы запускаете конвейер (например, в мастере Jenkins в этом примере)
  2. , чтобы JSON-процессор командной строки 'jq' был доступен в узле, где вы запускаете конвейер (т.е. в мастере Jenkins в этом примере)
  3. добавить субъекта службы Azure к учетным данным Jenkins, как указано здесь -> https://docs.microsoft.com/en-us/azure/jenkins/execute-cli-jenkins-pipeline#add- учетные данные Azure-Service-Principal-To-Jenkins-

Ниже приведен скрипт конвейера Jenkins.

#!groovy
import groovy.transform.Field
import org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript
def props = []
@Field
def newParams = []
node {
    try {
        regenerateJob = (params.RegenerateJob == null) ? true : params.RegenerateJob
    }
    catch (MissingPropertyException e) {
        regenerateJob = true
    }
    stage('test'){
        withCredentials([azureServicePrincipal('JENKINSSERVICEPRINCIPALCREDENTIALID')]) {
            def shtagsoutput = sh (returnStdout: true, script: '''az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID > /dev/null
            az account set -s $AZURE_SUBSCRIPTION_ID > /dev/null
            shtagsoutputtemp=$(az acr repository show-tags --name "AZURECONTAINERREGISTRYNAME" --subscription $AZURE_SUBSCRIPTION_ID --repository "AZURECONTAINERREGISTRYREPOSITORYNAME" | jq '.[]')
            shtagsoutputtempfinal=$(echo $shtagsoutputtemp | sed 's/"//g')
            echo "${shtagsoutputtempfinal}"''').split(' ')
        shtagsoutputfinal = [shtagsoutput].flatten()
        newParams += [$class: 'ChoiceParameterDefinition', name: 'Phase', choices: shtagsoutputfinal]
        newParams += [$class: 'BooleanParameterDefinition', name: 'RegenerateJob', defaultValue: false]
        props += [$class: 'ParametersDefinitionProperty', parameterDefinitions: newParams]
        properties(properties: props)
        }
    }
}

Обратите внимание, что при создании этого задания Jenkins оно остается без параметров. Но после первой сборки задание Jenkins восстанавливается и выбирается с новыми параметрами.

Приветствия !!

С уважением, Кришна

0
ответ дан KrishnaG-MSFT 17 January 2019 в 12:28
поделиться
Другие вопросы по тегам:

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