
GitHub ActionsでS3にデプロイする!
2019年11月にGitHub Actionsが正式リリースされました!
GitHubでベータ版として公開されていたGitHub Actionsという機能が、GitHub主催のイベントGitHub Universe 2019で正式版としてリリースされました。
GitHub Actionsとは、GitHub上でワークフローを動かせるというものです。
ymlファイルでワークフローを定義し、pushやissue作成などをトリガーとして起動することができます。
リポジトリページのここにあるやつです↓

コワーキングスペースHarborS表参道オープンしました!
時を同じくしてアンチパターン社のオフィス兼コワーキングスペースが表参道にオープンしました!
https://harbors.anti-pattern.co.jp/

とにかくキレイでおしゃれ!

働きやすくて

カフェもあって

テラス席もある!

テラスからの夜景は最高なんです!!(個人の感想です)
エンジニアにとって働きやすい環境を提供するために、コワーキングスペースとしても運営しており、会員募集のサイトを作ったのですが、毎回のデプロイが大変なので、GitHub Actionsで自動化をしました!
GitHub ActionsでS3にデプロイする
会員募集サイトの構成は、CloudFrontでS3をオリジンに設定した構成ですので、S3の更新と、CloudFrontのキャッシュクリアの作業が必要です。
まず、AWSでデプロイ専用のS3とCloudFrontの権限を付与したIAM ユーザーを作成します。
アクセスキーとシークレットキーを控えておきます。
GitHub MarketPlaceページに、ワークフローのテンプレートが多数用意されているのでそれを利用します。

AWS S3 Syncというのがちょうど良さそうです。
ワークフローを追加したいリポジトリーのActionページを開きます。
Set up workflow yourself をクリック

リポジトリ/.github/workflows 配下にymlファイルが作られるので、そこにワークフローを設定します。ファイル名は拡張子が.ymlであればお好きな名前でOKです。
name: AWS S3 Sync
on:
push:
branches:
- master_for_aws
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Publish to AWS S3
uses: opspresso/action-s3-sync@master
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: "ap-northeast-1"
FROM_PATH: "./docs"
DEST_PATH: "s3://{s3のバケット名・パスを入れる}"
OPTIONS: "--acl public-read"

3行目〜
master_for_awsブランチにpush(merge、commit)されたときにワークフローを動かす という設定。

20行目・21行目は、AWSで作成したIAMユーザのシークレットキー、アクセスキーをGitHubのSecretsから登録します。


22行目はS3に利用しているリージョンを入力
23行目はGitHubのどこのディレクトリ配下をS3に配布するかを入力します。
「docs」というディレクトリ配下にしておくと、GitHub Pagesを利用するときにちょっと便利になります。

masterからブランチを切って追記修正、masterにマージ、GitHub Pagesで修正内容を確認、master_for_awsにマージしてワークフローが発火、デプロイされるという流れで運用しています。
master_for_awsブランチにマージすると、Actionsタブでワークフローが動き出しているのを確認できます。

どこかで失敗しても、ログで確認できます。
今回使ったワークフローは、S3バケットからたどってCloudFrontのキャッシュクリアをしてくれているので、CloudFrontを設定していないとエラーが発生します。
夢広がるGitHub Actions
ワークフローのトリガーはとにかく沢山あるみたいでして、色々と活用できそうです。
■ワークフローのトリガー
■GitHub Actions を用いて issue が更新されたら LINE に通知する方法
■GitHub ActionsでPull Requestに自動的にラベルを付与してレビューをしやすくする
最後に
とにかく、エンジニア向けコワーキングスペースHarborS表参道は最高ですので、(個人の感想です)皆さんぜひ見学に来てみてください!
HarborS表参道

おしまい