見出し画像

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/*"
            ]
        }
    ]
}

スクリーンショット 2020-05-11 15.35.47

2. GithubでSecretsを設定

ビルド/デプロイ時の環境変数を設定する。暗号化してくれるので安心。
手順1で作ったIAMユーザーのアクセスキーと、デプロイ先のバケット名を登録する。

スクリーンショット 2020-05-11 15.49.24

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. プッシュして実行してみる

スクリーンショット 2020-05-11 18.45.42

スクリーンショット 2020-05-11 18.46.20

シークレット情報はちゃんとマスクされてる〜

ビルド時間は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のダッシュボード見に行かなくて済みますね。

参考


この記事が気に入ったらサポートをしてみませんか?