LoginSignup
4
0

More than 3 years have passed since last update.

GitHub ActionsでLaravelアプリを本番環境に自動デプロイする 〜Github Workflow編〜

Posted at

前回 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を使ったデプロイに改修してみます。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0