首页 > 解决方案 > 在 jenkins 声明性管道 cloudformation 中使用带有 shell 命令的 If 语句

问题描述

我正在将 aws cloudformation 集成到我的 jenkins 管道中。我想执行一个

$ aws cloudformation describe-stacks --stack-name dev-nics-proxyservlet-svc --region us-west-2

命令来查看我是否有一个带有我正在寻找的名称的堆栈。如果命令发现栈存在,我想删除栈:

$ aws cloudformation delete-stack --stack-name dev-nics-proxyservlet-svc

但是如果堆栈不存在,我想创建堆栈:

aws cloudformation create-stack --stack-name dev-nics-proxyservlet-svc --region us-west-2 --template-body file://dev-nics-proxyservlet-cluster.yml --parameters file://dev-nics-proxyservlet-svc-param.json --capabilities "CAPABILITY_IAM" "CAPABILITY_NAMED_IAM"

如何在声明性多分支 jenkins 管道中编写这个 shell comman?任何帮助表示赞赏。谢谢!

标签: shellif-statementjenkinsamazon-cloudformationmultibranch-pipeline

解决方案


我认为这些方面的东西应该起作用:

if aws cloudformation describe-stacks --stack-name dev-nics-proxyservlet-svc --region us-west-2 &>/dev/null 
then
    aws cloudformation delete-stack --stack-name dev-nics-proxyservlet-svc
else
    aws cloudformation create-stack --stack-name dev-nics-proxyservlet-svc --region us-west-2 --template-body file://dev-nics-proxyservlet-cluster.yml --parameters file://dev-nics-proxyservlet-svc-param.json --capabilities "CAPABILITY_IAM" "CAPABILITY_NAMED_IAM"
fi

if通过检查退出代码aws cloudformation describe-stacks作品。如果为0,则堆栈存在,如果不为0,则不存在。


推荐阅读