jenkins - 在 Jenkins 管道内的 shell 脚本中使用 grep 和变量
问题描述
背景:我需要 Jenkins 在管道期间担任 AWS 角色,按照以下步骤操作: https ://ripon-banik.medium.com/aws-assume-role-script-4e7d3b548f20
所有环境变量都已设置,Jenkins 管道:
stage('Get aws role'){
steps{
container(name: 'pod'){
sh 'temp_role=$(aws sts assume-role --role-arn arn:aws:iam::${role_account_id}:role/jenkins --role-session-name jenkins-cloudfront --external-id ${external_id})'
sh (script: 'export AWS_ACCESS_KEY_ID=$(echo $temp_role | jq -r .Credentials.AccessKeyId)')
sh 'export AWS_SECRET_ACCESS_KEY=$(echo $temp_role | jq -r .Credentials.SecretAccessKey)'
sh 'export AWS_SESSION_TOKEN=$(echo $temp_role | jq -r .Credentials.SessionToken)'
sh 'echo ${AWS_ACCESS_KEY_ID}'
sh 'echo "AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY" '
sh 'echo "AWS_SESSION_TOKEN: $AWS_SESSION_TOKEN" '
}
}
}
如您所见,我尝试了导出变量的不同(以及更多)变体,但运气不佳,看起来 Jenkins 拆分了输出:
[Pipeline] sh
+ jq -r .Credentials.AccessKeyId
+ echo
+ export AWS_ACCESS_KEY_ID=
[Pipeline] sh
+ jq -r .Credentials.SecretAccessKey
+ echo
+ export AWS_SECRET_ACCESS_KEY=
[Pipeline] sh
+ jq -r .Credentials.SessionToken
+ echo
+ export AWS_SESSION_TOKEN=
此时也不能选择调用外部 shell 脚本,有什么建议吗?
解决方案
推荐阅读
- javascript - 如何像谷歌日历模式一样打开模式,在完整日历中的当天点击事件
- excel - 根据自动过滤列复制列,然后仅将值粘贴到该自动过滤列
- vb.net - 如何在 VB.Net 2012 中为一个串行端口使用 2 个轨迹栏交替发送数据
- linux - 重定向文件是在没有权限的情况下生成的
- python - Python - 在数据框中计算
- java - 如何更改请求 IP 以进行测试?
- java - 运行 lint 测试时出现 JAXBException
- karate - 当帖子 'content-type' 是 application/x-www-form-urlencoded 并且 * form field param= {
} - python - 有没有办法在 Azure Databricks 中动态地将参数传递给作业?
- c# - 如何使用 C# 将 `xmlns` 重命名为 TYPE