如何从sh
块中导出一些变量,以便在以后的阶段中使用?
下面的代码没有给予我任何错误,但是这些值在后面的阶段中永远不会作为环境变量使用。
steps {
sh """
ASSUME_ROLE_RESPONSE=\$(aws sts assume-role --role-arn "arn:aws:iam::${env.NON_PROD_ACCOUNT_ID}:role/${env.AWS_ROLE}" --role-session-name "${env.AWS_ROLE_SESSION}" --duration-seconds 3600)
${env.ACCESS_KEY_ID}=\$(echo \$ASSUME_ROLE_RESPONSE | jq --raw-output '.Credentials.AccessKeyId')
${env.SECRET_ACCESS_KEY}=\$(echo \$ASSUME_ROLE_RESPONSE | jq --raw-output '.Credentials.SecretAccessKey')
${env.SESSION_TOKEN}=\$(echo \$ASSUME_ROLE_RESPONSE | jq --raw-output '.Credentials.SessionToken')
echo "AWS_ACCESS_KEY_ID=${ACCESS_KEY_ID},AWS_SECRET_ACCESS_KEY=${SECRET_ACCESS_KEY},AWS_SESSION_TOKEN=${SESSION_TOKEN}"
printenv | sort
"""
}
3条答案
按热度按时间7cwmlq891#
我已经得到了这个工作,但我不能说它是优雅的,如果有人有一个更好的\清洁的答案,我会很乐意接受它。
以下是我的解决方案:
我回答说,因为我读了一堆帖子,这些帖子提出了对我不起作用的想法,所以就目前而言,这是我对AWS进行身份验证的最佳选择,并确保凭据在后续阶段可用。
g9icjywg2#
要从sh中导出vars,请尝试使用以下命令:
这将把你的bash值导出到groovy变量中,事实上,它可以把变量推送到环境中。
3htmauhk3#
对于将来查看此线程的人,这对我有效并将其全局设置,只需将环境中的AWS_ASSUME_ROLE_ARN设置为您所需的“假定角色”: