LoginSignup
2
2

More than 1 year has passed since last update.

【Github Action】Githubのmainブランチpush時にテスト環境に自動デプロイ

Posted at

概要

テスト環境の中に入って、毎回pullしたり、キャッシュ削除したり、artisanコマンド打ったりが面倒なので
Githubアクションを使って実現してみました。

ステップ

  1. テスト環境の公開鍵を GitHub リポジトリの Deploy keysに登録
  2. テスト環境内にsshでリポジトリをclone
  3. Secretsにサーバー情報などを登録
  4. Workflow を作成する

テスト環境の公開鍵を GitHub リポジトリの Deploy keysに登録

サーバーに上で認証鍵を作ります※メールアドレスは識別用
ssh-keygen -t rsa -b 4096 -C [メールアドレス]

公開鍵をコピーします
cat ~/.ssh/id_rsa.pub

リポジトリ内のSettingsDeploy keysAdd deploy keyで、公開鍵を登録します。

TitleはなんでもOK

テスト環境内にsshでリポジトリをclone

httpsではなくsshでcloneします。

githubで自分のアカウントにssh設定を行なっていない場合は以下の記事から鍵の登録をしてから行いましょう。

Secretsにサーバー情報などを登録

リポジトリ内のSettingsSecretsActionsNew repository secretから情報を登録します。

  • SERVER_DEPLOY_DIR
    • プロジェクトのディレクトリパス(.envがある場所まで)
  • SERVER_HOST
  • SERVER_USERNAME
  • SSH_PORT
  • SSH_PRIVATE_KEY
    • 自分自身の秘密鍵(cat ~/.ssh/id_rsa)

を登録しました。

Workflow を作成する

リポジトリ内のActionsSet up this workflowからymlファイルを作成(名前はなんでもOK)

今回はpullからマイグレーション実行とキャッシュクリアのコマンドを登録します。
コマンドを追加したい場合はscriptの項目に加えましょう。

name: CI

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USERNAME }}
          port: ${{ secrets.SSH_PORT }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          passphrase: ${{ secrets.SSH_PASS }}
          script: |
            cd ${{ secrets.SERVER_DEPLOY_DIR }}
            git pull origin main
            php artisan migrate:fresh --seed
            php artisan cache:clear
            php artisan config:clear
            php artisan route:clear
            php artisan view:clear

後は保存すればOKです。

アクションが行われるタイミングを変えたい時とかはワークフロー構文を漁ってみましょう

2
2
1

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
2
2