githubActionsを使ってテストが成功するとAWS上のElasticBeanstalkに自動的にデプロイしてくれるタスクを作ります。
React.jsで生成した静的ファイル群をデプロイしていきます。
目次
AWS上での設定
事前にデプロイ対象となるAWS S3のarnをメモしておきます。
例として「aws-my-sample-s3」というパケットを作成しました。
arnは「arn:aws:s3:::aws-my-sample-s3」です
S3デプロイ用のポリシーを作る
例として「aws-deploy-policy」というポリシーを作成しました。
jsonで作っていきます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": [
"arn:aws:s3:::aws-my-sample-s3"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": [
"arn:aws:s3:::aws-my-sample-s3"
]
}
]
}
デプロイ用のIAMユーザを作る
IAMからCICD用のユーザを追加していきます。
この時、アクセスの種類は「プログラムによるアクセス」を選択します。
S3へのデプロイのために必要な権限をアタッチする
アクセス権限の設定では、「既存のポリシーを直接アタッチ」を選択し、先程作ったポリシーをアタッチします。
- aws-deploy-policy
確認画面
タグは特に指定してないです。
githubでの設定に必要な情報を取得する
ユーザの作成が完了すると、以下のような画面に移ります。
csvファイルをダウンロードして保存しておきます。
※このタイミングでしかcsvファイルやシークレットアクセスキーは確認できません。紛失した場合はアクセスキーを再発行します。
github上での設定
Secretsにアクセスキーとシークレットキーを登録する
githubのproject -> Settings -> Secrets
今回は
CICD_DEVELOP_AWS_ACCESS_KEY_ID・・・アクセスキー
CICD_DEVELOP_AWS_SECRET_ACCESS_KEY・・・シークレットキー
で登録しました。
Actionsでworkflowを作成する
# This is a basic workflow to help you get started with Actions
name: CICD for Development
# Controls when the action will run.
on:
# mainブランチにpush,margeされたタイミングで発火する
push:
branches: [ main ]
# 手動で実行する
workflow_dispatch:
jobs:
build:
name: Build And Upload to Devlopment S3
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup
uses: actions/setup-node@v1
with:
node-version: '12'
- run: yarn
# テスト実行
- name: Test
run: yarn test
# ビルド
- name: Build
run: yarn build
# S3へのデプロイ準備
- name: Configure AWS credentials from account
uses: aws-actions/configure-aws-credentials@v1
with:
# Secretsで登録したキーを設定
aws-access-key-id: ${{ secrets.CICD_DEVELOP_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.CICD_DEVELOP_AWS_SECRET_ACCESS_KEY }}
# S3のリージョン
aws-region: ap-northeast-1
# デプロイ(ファイルをアップロード)
- name: Copy Files to s3
run: |
aws s3 sync ./build s3://aws-my-sample-s3