Jenkins 多行字符串参数,

标签 jenkins parameters jenkins-pipeline multilinestring

我是 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"]

尽管每个帐户都有不同的名称,并且需要不同的路径,即 account_one 的路径是“http://account_one/this-is-just-an-example/stack-overflow”,所以我不希望 account_three 的路径是“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_oneaccount_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 多行字符串参数,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60177503/

相关文章:

shell - Groovy Init 中的 Jenkins 环境变量

c++ - 如何将模板类参数转换为常量参数

parameters - 如何设置JVM参数

git - 基于主干的开发有多少流水线?

jenkins - Jenkins管道脚本失败,并显示“类生成期间出现一般错误:方法代码太大!”

jenkins - 我可以将声明性管道的整个阶段包装为 groovy 库函数吗?

java - 是否可以仅从一个特定分支触发 Jenkins?

ios - Jenkins iOS 归档错误与 Pods FIRCoreDiagnostics.m 正常armv7

jenkins - 如何使用 Hudson 类和 groovy 从 jenkins 工作中获得最后一次成功构建

sql-server - 具有可为 null 的输出参数的 SQL Server 2016 CLR 存储过程