アジェンダ
GitHub Actionsを使用して、コードの更新を自動的にステージング環境へデプロイする手順を簡単にまとめます。
このワークフローにより、main
ブランチに変更がプッシュされた際に、サーバーへコードが自動展開されるようにします。
ステップ 1: リポジトリシークレットの設定
まず、デプロイ先のリモートサーバーにアクセスするための機密情報(ホスト、ユーザー名、SSH鍵、ポート番号など)をGitHubリポジトリに設定します。
- リポジトリページの
Settings
に移動。 -
Secrets and variables
→Actions
を選択。 - 次のシークレットを追加します:
-
SSH_HOST
: 接続先サーバーのIPアドレスやドメイン名 -
SSH_USER
: サーバーにアクセスするためのユーザー名 -
SSH_KEY
: リモートサーバーへの秘密鍵(OpenSSH形式をbase64エンコード) -
SSH_PORT
: SSHで使用するポート(通常は22)
-
ステップ 2: GitHub Actions ワークフローの作成
次に、deploy.yml
という名前のGitHub Actionsファイルを作成し、ステージング環境へ自動デプロイを設定します。
name: Auto Deploy to Staging
on:
push:
branches:
- main
jobs:
deployment:
name: Deploy to Server
runs-on: ubuntu-latest
steps:
- name: SSH into server and deploy
uses: appleboy/ssh-action@v0.1.7
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd /var/www/html/myproject/
git fetch --all
git reset --hard origin/main
ステップ 3: ワークフローの解説
-
name
フィールドで、このワークフローの名称を指定しています。GitHub上で表示される名称です。 -
on
フィールドでは、main
ブランチにコードがプッシュされた場合にこのワークフローがトリガーされます。 -
jobs
セクションでジョブを定義しています。deployment
というジョブがubuntu-latest
という仮想環境で動作します。 -
steps
では、appleboy/ssh-action
を利用して、SSH経由でサーバーに接続し、git fetch
とgit reset
を使用してリモートリポジトリから最新のコードを取得し、ステージング環境に反映させます。
ステップ 4: サーバー設定
サーバー側では、Gitが正しくインストールされており、/var/www/html/myproject/
ディレクトリがGitリポジトリとして設定されている必要があります。SSH公開鍵認証が有効で、適切なアクセス権限が設定されていることを確認してください。
まとめ
この手順を使用して、コードの更新がリモートサーバーに自動で反映される仕組みを簡単に構築できます。デプロイに必要なコマンドはプロジェクトに応じて変更できるため、柔軟にカスタマイズしてください。