Laravel Sailで作成したプロジェクトをServerless FrameworkでAWS LambdaとAurora Serverlessへデプロイできるようにしましたが、GitHub Actionsを利用してデプロイできるか試してみました。
前提
こちらのリポジトリにGitHub Actionsのワークフローを追加する手順となります。
手順
リポジトリにSecretを追加する
AWS環境へデプロイするのにAWSのクレデンシャル情報が必要となるため、対象となるリポジトリに以下のSecretを追加します。
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
デプロイ用の.env
ファイルを用意する
GitHub Actions環境でLaravelプロジェクトを展開する必要があるので、デプロイ用の.env
ファイルを用意します。
> cp .env.example .env-deploy
# 環境に合わせて編集
GitHub Actionsのワークフロー定義
以下がワークフローの定義となります。
name: deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: cache vendor
id: cache
uses: actions/cache@v1
with:
path: ./vendor
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Composer install
if: steps.cache.outputs.cache-hit != 'true'
run: composer install -n --prefer-dist
- name: Copy .env
run: cp .env.deploy .env
- name: generate key
run: php artisan key:generate
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: Install Dependencies
run: |
npm install serverless -g
npm install
- 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: Deploy to Lambda
run: sls deploy
- name: Migrate
run: vendor/bin/bref cli --region=ap-northeast-1 laravel-dev-artisan -- migrate
- name: S3 sync
run: aws s3 sync public s3://kai-laravel-test/public --delete
検討事項として、S3 sync
にバケット名をベタ書きしている点、AWSクレデンシャルをステージ(prod、dev)ごとに切り替える方法などです。
動作確認
実際にGitHubリポジトリへpushしてワークフローが動作するか確認します。
うまく動作しました。デプロイ環境へアクセスしてみます。
うまく動作しました。
やったぜ
不要になったら
手元にリポジトリをクローンして開発・デプロイ環境があれば、コマンドで削除できます。
> aws s3 rm --recursive s3://kai-laravel-test/
> serverless remove
参考
kai-kou/laravel-sail-sample-projects at feature/deploy-aws-lambda
https://github.com/kai-kou/laravel-sail-sample-projects/tree/feature/deploy-aws-lambda
GitHub Actionsを使ってAWS Lambdaへ自動デプロイ (詳説+デモ手順付きver) - Qiita
https://qiita.com/homines22/items/412d4e81b24804d75205
GitHub ActionsでAWS S3に自動でデプロイする(静的ファイルのディレクトリを丸ごとアップロードする) - Qiita
https://qiita.com/tippy/items/488e52411a9a5765330f