Я хочу знать, как я могу выполнить несколько команд sh в отличном Jenkinsfile, в зависимости от количества параметров, введенных, например, в «построить с вводом параметров». Если у меня есть это:
Теперь я использую этот код для выполнения следующей команды sh, и она работает, если я ввожу один URL-адрес.:
def urlcf1 = params.URL1
def urlcf2 = params.URL2
node {
stage('purge URL content in cloudflare') {
withCredentials([usernamePassword(credentialsId: 'xxxxxxxxx-xxxxxxxx-yyyyyyyyy', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
sh ("""curl -X POST "https://api.clo.com/client/v4/zones/xxxxxxxxxxxxxxxxxxxxxxx/purge_cache" \
-H "X-Auth-Email: $USER" \
-H "X-Auth-Key: $PASSWORD" \
-H "Content-Type: application/json" \
--data '{"files":["${urlcf1}",{"url":"${urlcf1}","headers":{"Origin":"cloudflare.com","CF-IPCountry":"US","CF-Device-Type":"desktop"}}]}' """)
}
}
}
, но что, если я хочу иметь более одногоURL?«URL 3» «URL 4» «URL 5» в сборке с параметрами и в зависимости от количества вводимых мной URL, команда выполняется , что количество раз для каждого из этих URL-адресов,Например, если я получу доступ к 2 URL и оставлю 3 пустыми, команды будут выполняться только 2 раза с этими 2 URL.Может быть, используя выражение "while"?или может "если не пусто"?Я попробовал этот последний только с одним URL, но получил ошибку.это код:
def urlcf1 = params.URL1
def urlcf2 = params.URL2
node {
stage('purge URL content in cloudflare') {
withCredentials([usernamePassword(credentialsId: 'xxxxxxxxxxxxxxxx-xxxxxxxxxxxxx', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
if (urlcf1 =! null) {
sh ("""curl -X POST "https://api.cloudflare.com/client/v4/zones/xxxxxxxxxxxxxxxxxxxxx/purge_cache" \
-H "X-Auth-Email: $USER" \
-H "X-Auth-Key: $PASSWORD" \
-H "Content-Type: application/json" \
--data '{"files":["${urlcf1}",{"url":"${urlcf1}","headers":{"Origin":"cloudflare.com","CF-IPCountry":"US","CF-Device-Type":"desktop"}}]}' """)
else (echo "Value cannot be empty ")
}
}
}
}
и получил: