Многострочный строковый параметр Jenkins, - PullRequest
0 голосов
/ 12 февраля 2020

Я довольно новичок в Дженкинс, и я впервые настраиваю параметры. У меня есть несколько учетных записей, для которых я хочу запустить один и тот же код, чтобы сократить количество строк кода.

У меня есть 5 учетных записей, которые используют одно и то же соглашение в своем URL:

export PROFILE=account_one
export PATH="http://account_one/this-is-just-an-example/stack-overflow"

, в то время как 1 учетная запись не следует этому соглашению:

export PROFILE=account_two
export PATH="http://second_account/this-is-just-an-example/stack-overflow"

В любом случае, я создал многострочный строковый параметр с именем «account», и для значения я ввел все 5 имен учетных записей. Вот что я пытаюсь сделать сейчас:

if [ "${account}" = ???]
then 
    export PROFILE=${account}
    export PATH="http://${account}/this-is-just-an-example/stack-overflow"

    python3 run_code.py

elif [ "${account}" = "account_two" ]
    export PROFILE="account_two"
    export PATH="http://second_account/this-is-just-an-example/stack-overflow"

    python3 run_code.py
fi

Во-первых, я хочу убедиться, что я делаю это правильно, так как я никогда раньше не использовал параметризацию в Дженкинсе.

Во-вторых, я тоже не знаком с Bash, поэтому я не уверен насчет синтаксиса здесь.

Наконец, это больше вопрос программирования, я не уверен, что вставить в первый оператор , если . Что я пробовал, так это установил aws_account в операторе if для каждого значения в многострочном строковом параметре. Например:

if [ "${account}" = "account_one"] || [ "${account}" = "account_three"]

Хотя каждая учетная запись имеет свое имя и будет нуждаться в другом PATH, т. Е. Путь к account_one равен "http://account_one / this-is-only-an-example / переполнение стека", поэтому я не хочу, чтобы account_three имел путь" http://account_one / это просто пример / переполнение стека".

Я знаю, что мое понимание нечеткое, но у Дженкинса нет лучших примеров, большинство из них - вопросы без ответа на inte rnet. Пожалуйста помоги.

РЕДАКТИРОВАТЬ: я создал два многострочных строковых параметра, один для учетных записей, которые следуют за форматом файла, и один для учетных записей, которые этого не делают. Я решил использовать для l oop для каждой учетной записи:

for i in "${account[@]}"; do
    export PROFILE=${i}
    export PATH="http://${i}/this-is-just-an-example/stack-overflow"

    python3 run_code.py
done

for i in "${account_other[@]}"; do
    export PROFILE=${i}
    export PATH="http://${i}/this-is-just-an-example/stack-overflow"

    python3 run_code.py
done

Это правильно?

1 Ответ

1 голос
/ 12 февраля 2020

Вы можете обойтись с одним многострочным строковым параметром. Предположим, что вы присвоили значения account_one thru account_six многострочному строковому параметру с именем aws_accounts.

echo "${aws_accounts}"
account_one
account_two
account_three
account_four
account_five
account_six

Затем вы можете использовать оператор if-else внутри вашего for l oop для установки вашей среды.

for account in "${aws_accounts}"; do
    export PROFILE=${account}
    if [ "${account}" = 'account_two' ]; then
        export PATH="http://second_account/this-is-just-an-example/stack-overflow"
    else
        export PATH="http://${account}/this-is-just-an-example/stack-overflow"
    fi
    python3 run_code.py
done
...