【问题标题】:Get a list of AWS pipelines ready for stage approval获取准备好进行阶段批准的 AWS 管道列表
【发布时间】:2020-05-31 20:57:49
【问题描述】:

我有 40 多个管道需要从开发人员到 QA 再到 QA 到阶段进行审批。我正在编写一个脚本来使用 AWS CLI 命令来做。我已经能够为我知道特定管道已准备好获得批准的单个管道执行此操作。

aws codepipeline put-approval-result --cli-input-json file://TestPipeline.json 

这就是我为单个管道的批准收集信息的方式

aws codepipeline get-pipeline-state --name Pipeline-Ready-for-Approval 

我想知道的是 - 有没有一种方法可以使用 get-pipeline-state 循环遍历所有管道并识别阶段名称和操作名称,而无需手动检查每个管道的输出。

我可以尝试从aws codepipeline list-pipelines 获取管道名称以使列表循环。

是否可以同时使用 bash 脚本和 awscli 和 jq?

谢谢

【问题讨论】:

  • 你的 JSON 在哪里?你想从中得到什么输出?你想把它放在哪里?

标签: bash jq aws-cli aws-codepipeline


【解决方案1】:

您可以使用以下方法到达那里的大部分路

pipelines=$(aws codepipeline list-pipelines --query 'pipelines[].name' --output text)

for p in pipelines; do
    aws codepipeline get-pipeline-state \
        --name $p \
        --query 'stageStates[?latestExecution.status==`InProgress`].{stageName:stageName,actionName:actionStates[0].actionName,token:actionStates[0].latestExecution.token}'
done

这假定批准操作作为阶段内的第一个唯一操作存在。

您将获得put-approval-result 命令所需的输出

【讨论】:

  • 谢谢@maafk - 我将使用上述命令。我正在查看查询选项以仅选择仅满足特定模式的那些管道。从一些在线示例中,我尝试了'pipelines[contains["pattern]].name',但这并没有帮助。你能告诉我,我应该如何制定该查询
  • 我能够使用 --query 'pipelines[?contains(name, pattern) == true].name' 过滤模式
猜你喜欢
  • 2020-10-31
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多