Jenkins 多行字符串参数,
Jenkins Multi Line String Parameter,
我是 Jenkins 的新手,这是我第一次设置参数。
我有多个帐户,我想 运行 使用相同的代码,以减少代码行数。
我有 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
首先,我想确保我做的是正确的,因为我以前从未在 Jenkins 中使用过任何参数化。
其次,我也不熟悉 Bash,所以我不确定这里的语法。
最后,这更像是一个编程问题,我不确定要为第一个 if 语句输入什么。
我尝试过的是将 if 语句中的 aws_account 设置为多行字符串参数中的每个值。如:
if [ "${account}" = "account_one"] || [ "${account}" = "account_three"]
不过,每个帐户都有不同的名称,需要不同的 PATH,即 account_one 的路径是“http://account_one/this-is-just-an-example/stack-overflow" so I don't want account_three to have the path "http://account_one/this-is-just-an-example/stack-overflow”。
我知道我的理解参差不齐,但 Jenkins 没有最好的例子,大多数都是互联网上没有答案的问题。请帮忙。
编辑:我创建了两个 多行字符串参数,一个用于遵循文件格式的帐户,一个用于不遵循文件格式的帐户。我决定为每个帐户使用一个 for 循环:
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
这是正确的吗?
您可以使用一个多行字符串参数。假设您已将值 account_one
到 account_six
分配给名为 aws_accounts
.
的多行字符串参数
echo "${aws_accounts}"
account_one
account_two
account_three
account_four
account_five
account_six
然后您可以在 for
循环中使用 if-else
语句来设置您的环境。
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
我是 Jenkins 的新手,这是我第一次设置参数。 我有多个帐户,我想 运行 使用相同的代码,以减少代码行数。
我有 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
首先,我想确保我做的是正确的,因为我以前从未在 Jenkins 中使用过任何参数化。
其次,我也不熟悉 Bash,所以我不确定这里的语法。
最后,这更像是一个编程问题,我不确定要为第一个 if 语句输入什么。 我尝试过的是将 if 语句中的 aws_account 设置为多行字符串参数中的每个值。如:
if [ "${account}" = "account_one"] || [ "${account}" = "account_three"]
不过,每个帐户都有不同的名称,需要不同的 PATH,即 account_one 的路径是“http://account_one/this-is-just-an-example/stack-overflow" so I don't want account_three to have the path "http://account_one/this-is-just-an-example/stack-overflow”。
我知道我的理解参差不齐,但 Jenkins 没有最好的例子,大多数都是互联网上没有答案的问题。请帮忙。
编辑:我创建了两个 多行字符串参数,一个用于遵循文件格式的帐户,一个用于不遵循文件格式的帐户。我决定为每个帐户使用一个 for 循环:
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
这是正确的吗?
您可以使用一个多行字符串参数。假设您已将值 account_one
到 account_six
分配给名为 aws_accounts
.
echo "${aws_accounts}"
account_one
account_two
account_three
account_four
account_five
account_six
然后您可以在 for
循环中使用 if-else
语句来设置您的环境。
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