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"
в таблице строк. Ссылки разные, но контент один и тот же.
Я успешно воспроизвел полный сценарий (т. Е. Требование «настроить задание Jenkins, которое получает все существующие теги из определенного репозитория реестра контейнеров Azure и делает их доступными для выбора в качестве параметров при создании задания») следуя указанному ниже процессу.
Только к вашему сведению, это достигается с помощью «параметра выбора», как показано на скриншоте ниже.
Для работы приведенного ниже сценария конвейера 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 восстанавливается и выбирается с новыми параметрами.
Приветствия !!
С уважением, Кришна