概要
テスト環境の中に入って、毎回pullしたり、キャッシュ削除したり、artisanコマンド打ったりが面倒なので
Githubアクションを使って実現してみました。
ステップ
- テスト環境の公開鍵を GitHub リポジトリの Deploy keysに登録
- テスト環境内にsshでリポジトリをclone
- Secretsにサーバー情報などを登録
- Workflow を作成する
テスト環境の公開鍵を GitHub リポジトリの Deploy keysに登録
サーバーに上で認証鍵を作ります※メールアドレスは識別用
ssh-keygen -t rsa -b 4096 -C [メールアドレス]
公開鍵をコピーします
cat ~/.ssh/id_rsa.pub
リポジトリ内のSettings
→ Deploy keys
→Add deploy key
で、公開鍵を登録します。
TitleはなんでもOK
テスト環境内にsshでリポジトリをclone
httpsではなくsshでcloneします。
githubで自分のアカウントにssh設定を行なっていない場合は以下の記事から鍵の登録をしてから行いましょう。
Secretsにサーバー情報などを登録
リポジトリ内のSettings
→Secrets
→Actions
→New repository secret
から情報を登録します。
- SERVER_DEPLOY_DIR
- プロジェクトのディレクトリパス(.envがある場所まで)
- SERVER_HOST
- SERVER_USERNAME
- SSH_PORT
- SSH_PRIVATE_KEY
- 自分自身の秘密鍵(cat ~/.ssh/id_rsa)
を登録しました。
Workflow を作成する
リポジトリ内のActions
→Set 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です。
アクションが行われるタイミングを変えたい時とかはワークフロー構文を漁ってみましょう