どうも,エンジニアのナカノです.
今回は,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サービスを勉強するのは,かなりアリだと思います.