Конвейер Jenkins: выполнить несколько команд sh, если значение в параметрах не пустое - PullRequest
0 голосов
/ 04 июня 2019

Я хочу знать, как я могу выполнить несколько команд sh в отличном Jenkinsfile, в зависимости от количества параметров, введенных, например, в «построить с вводом параметров». Если у меня есть это:

enter image description here

Теперь я использую этот код для выполнения следующей команды 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 ")

        }
    }

      }



}

и получил:

enter image description here

...