前回 https://qiita.com/araki-yzrh/items/c4a4ea29d1e9e9cebf88 の続きです
workflowを定義する
masterブランチにpushされたときに実行されるworkflowを定義します。
/.github/workflows/BuildDeploy.yml
name: BuildDeploy
on:
push:
branches:
- master
jobs:
build_deploy:
runs-on: ubuntu-latest
steps:
...
steps
の中に、タスクをstepとして定義していきます。
アプリのビルド
Laravelアプリは動作のために事前ビルドが必要です。
以下のように、ソースコードのチェックアウト、composer install、npm ci、npm buildするタスクをstepに追記していきます。
※Docker Login部分はGithub Packagesを前提にしています。docker hub等を利用する場合は適宜読み替えてください
/.github/workflows/BuildDeploy.yml
- uses: actions/checkout@v2
with:
ref: master
- name: Docker Login
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin
- name: composer install
run: docker-compose run app composer install --optimize-autoloader
- name: npm ci
run: docker-compose run app npm ci
- name: npm build
run: docker-compose run app npm run production
envの配置
envをGithub Secretsで管理している場合はこのように設置しておきます
/.github/workflows/BuildDeploy.yml
- name: put production env
env:
PROD_ENV: ${{ secrets.production_env }}
run: echo -e "${PROD_ENV}" > .env
デプロイ
今回は単純な例として、1台のサーバにrsyncでデプロイを行います。
/.github/workflows/BuildDeploy.yml
- name: deploy
run: rsync -ahv --delete ./ someapp-server:/var/www/app/
確認
対象のブランチにpushしてみるとworkflowが開始されたことが確認できると思います。
次回はAWS CodeDeployを使ったデプロイに改修してみます。