Github Actionsを使って、HugoサイトをS3にデプロイする方法
手順
1. IAMユーザーの作成
2. GithubでSecretsを設定
3. ビルド設定をやむる
4. プッシュして実行してみる
詳しく
1. IAMユーザーの作成
雑めなポリシー、乙女のポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
}
]
}
2. GithubでSecretsを設定
ビルド/デプロイ時の環境変数を設定する。暗号化してくれるので安心。
手順1で作ったIAMユーザーのアクセスキーと、デプロイ先のバケット名を登録する。
Name: Value
AWS_ACCESS_KEY_ID: アクセスキーID
AWS_SECRET_ACCESS_KEY: シークレットアクセスキー
S3_UPLOAD_BUCKET: デプロイ先のバケット名
3. ビルド設定をやむる
.github/workflows/deploy.yml
name: S3 Upload
on:
push:
branches:
- develop
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: "0.57.2"
extended: true
- name: Build Hugo
run: |
hugo --environment production
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-1
- name: Upload file to S3
env:
S3_UPLOAD_BUCKET: ${{ secrets.S3_UPLOAD_BUCKET }}
run: |
aws s3 sync --exact-timestamps --delete public s3://$S3_UPLOAD_BUCKET/
4. プッシュして実行してみる
シークレット情報はちゃんとマスクされてる〜
ビルド時間は40秒くらいでした。
ヨイトコロ
・publicリポジトリなら完全無料
privateでも月2000分までは無料で使えます。
https://help.github.com/ja/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions
・トリガーとしてGithubイベントをかなり自由に選べる
https://help.github.com/ja/actions/reference/events-that-trigger-workflows
・外部サービスに出さなくて済む
CircleCIのダッシュボード見に行かなくて済みますね。