terraformになれてたぼくがCloudFormation(CFn)で立ち上げたプロダクトにアサインされてCI/CDをしようと思った時に考えたさいきょうの方法です。
(如何せんCFn初心者なので、全然最強でない可能性ありますがご了承ください。。)
やりたかったこと
- dev(development),staging(stg),production(prd)など複数環境に手軽にデプロイ(prdはさすがに手軽すぎるのは危険なので、チェック機構は欲しい)
- 手軽にデプロイしたいが、どういう変更が入るか(
terraform
で言うところのterraform plan
の結果)は知りたい - 色々カスタマイズできるようにしておきたい
実現したこと
- 色々カスタマイズできるようにしておきたい
下記公式のactionがありましたが、リポジトリがアーカイブされており2年前を最後にメンテナンスされてないようだったので使うことを断念しました...
AWS CloudFormation "Deploy CloudFormation Stack" Action for GitHub Actions · Actions · GitHub Marketplace
https://github.com/marketplace/actions/aws-cloudformation-deploy-cloudformation-stack-action-for-github-actions
よって、自分でpythonで似たものを作ることにしました。
行ったことは下記の感じです。
-
プルリクエスト上でlinter, dryrunを流しコメントとして表示(サンプルはdevのみです。)
-
dev-release
orstg-release
ブランチに force pushするとdev
環境やstg
環境にデプロイ -
prd-release
ブランチ向けにプルリクエストを作成するとdryrunが走り、良さそうであればマージ。するとprd
環境にデプロイされる。
一応ソースはgithubにupしました。
https://github.com/LittleWat/cfn-github-action-sample
ツッコミなど大歓迎です。
ひとまず作っただけなので、今後運用していくと色々と問題が出てくるかと思います汗
随時対応していく所存です。
良きCI/CDライフをお送りください!
(cdkの方が今やメジャー感があるので、cdkも気になる今日この頃です)