GitHub ActionsでAWS Code Deployを回す
投稿日:
GitHub ActionsからAWSコマンドを簡単に叩けるようだったので試してみました。
今回CIでやることは『masterにプッシュされたらCodeDeployを走らせる』のみです。
AWS Code Deployの設定
こちらの記事で手順を紹介しています。
AWS Code DeployでEC2にデプロイする
AWS IAMの設定
こちらの記事で手順を紹介しています。
今回CircleCIは使わないので、「IAM準備」の手順のみ参照してください。
CircleCIからAWS Code Deployを実行する
GitHub Secretsへのキー登録
前手順で取得したIAMユーザーの『アクセスキーID』と『シークレットアクセスキー』をGitHubのSecretsに登録します。
まず、GitHubの対象リポジトリの『Settings > Secrets』を開き、『Add a new secret』をクリックします。
Secretsの設定画面になるので以下2つを設定します。
Name | Value |
---|---|
AWS_ACCESS_KEY_ID | IAMのアクセスキーID |
AWS_SECRET_ACCESS_KEY | IAMのシークレットアクセスキー |
GitHub Actionsの設定
デプロイしたいリポジトリのGitHubページの『Actions』タブを開き、
「Set up a workflow yourself」をクリックします。
.github/workflows/main.yml
の編集画面が開くので、以下のように記載します。
name: AWS Code Deploy
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Run AWS CodeDeploy
with:
args: deploy create-deployment --application-name "※APP_NAME※" --deployment-group-name "※GROUP_NAME※" --github-location repository="※REPO※",commitId="${{ github.sha }}"
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ※REGION※
※2020/11/20 修正
以前は以下を参考にmain.ymlを記載していたが、2020年11月現在使えなくなっていたので上記の通り切り替えた。
AWS Cli install action
なお、以下の部分は各自の環境に合わせて読み替えてください。
読み替える文字列 | 設定する値 |
---|---|
※APP_NAME※ | CodeDeployで設定したアプリケーション名 |
※GROUP_NAME※ | CodeDeployで設定したデプロイグループ名 |
※REPO※ | デプロイ対象のGitHubリポジトリ(「ユーザー名/リポジトリ名」形式) |
※REGION※ | CodeDeployを走らせるAWSのリージョン(例:ap-northeast-1) |
記載できたらコミットします。
コミットしたら、今回のコミットに対してGitHub Actionが動くので正常終了するか確認してください。
これで設定は完了です。
masterブランチが更新される度にAWS Code Deployが走りデプロイされるようになりました。
今回はデプロイのみのCIだからか、1回1分以内で処理完了していました。
Actionsはプライベートリポジトリで月間2,000分まで無料(2020年3月現在)なので、2,000回くらいリリースできる想定。