どうも,エンジニアのナカノです.
今回は,GitHub Actionsによるフロントやバックのビルド/デプロイの自動化をお話致します.
実はGitHub Actionsの経験が無く,それで今回の自動化で使ってみることにしました.
- 背景
- 作り方
- 所感
背景
今回は,未経験の技術を実際に試してみて,それで自動化が実現出来たらなという感じです.
CI/CDといえば,今まではGitLab CI/CD,Jenkins,CircleCIを使って構築していました.
今回の外部案件ではCircleCIを使おうかな(個人的にはCircleCIは好きなので...)と考えてました.
ただ,社内でGitHub Actionsが使われ始めており,それで気になって今回試してみました.
作り方
ここでは,フロントソースのビルド生成物をS3へアップロードする場合を考えます.
構成図は以下の通りです.至ってシンプルな図です.問題は中身の設定です.

公式資料や社内ソースを参考にし,ワークフローの設定をそれっぽく作りました.
以下は,フロントエンド用のGitHub Actionsのワークフローの設定です.
バックエンド向けのワークフローの設定についても,同様な設定で作りました.
.github/workflows/sample.yaml
name: xxxxxxxx
on:
push:
branches:
- master
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: set up node
uses: actions/setup-node@v1
with:
node-version: xx.xx.xx
- name: cache
uses: actions/cache@v2
with:
path: ~/node_modules
key: xxxxxxxx-${{ hashFiles('**/package.json') }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: xxxxxxxx-
- name: build
run: xxxxxxxx
- 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: ${{ secrets.AWS_DEFAULT_REGION }}
- name: deploy
run: xxxxxxxx
この設定をベースで作り上げると,次の一連の処理を行うことが出来ます.
Nodeに関するセットアップを行う
もしあれば,
node_modulesのリストアを行うフロントソースのビルドを実施する
AWSクレデンシャルのセットアップを行う
ビルド生成物のS3へのアップロードを行う
node_modulesをキャッシュとして保存する
所感
CI/CDサービスとしては,使い易い印象を持ちました.小さいところから始めるには適してます.
実際,ワークフローの設定さえ作れば,Gitプロジェクトとの連携のセットアップ等は不要です.
ワークフローの中でActionsというものが使えます.CircleCIで言うとOrbsみたいなものですかね.
ただ,細かくカスタマイズしたり,D in Dの構成でやりたいならCircleCIの方が使い易そうです.
GitHub Actionsから始めて色々なCI/CDサービスを勉強するのは,かなりアリだと思います.