メインコンテンツへスキップ

GitHub Actionsでmainマージをステージングへ自動デプロイする手順

    GitHub Actionsで自動デプロイを始める前に

    必要な前提知識

    • Gitの基本操作ができること

    • GitHubアカウントを持っていること

    用意するもの

    • デプロイ対象のGitHubリポジトリ

    • ステージング環境のURL(例: https://staging.example.com)

    • デプロイに使うシークレット(例: STAGING_SSH_KEY)


    ワークフローの全体像

    1. mainブランチへプルリクエストをマージ

    2. push イベントがトリガーされ、GitHub Actions が起動

    3. コードをステージングサーバへ転送し、簡易的なビルド/デプロイを実行

    4. 成功すればステージング環境が最新状態に更新される


    実装例: .github/workflows/deploy.yml

    name: Deploy to Staging
    on:
      push:
        branches:
          - main
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout repository
            uses: actions/checkout@v3
    
          - name: Set up SSH
            uses: webfactory/ssh-agent@v0.5.4
            with:
              ssh-private-key: ${{ secrets.STAGING_SSH_KEY }}
    
          - name: Deploy to staging server
            run: |
              rsync -avz --delete ./ user@staging.example.com:/var/www/app
    

    上記は最小構成です。実際のプロジェクトでは npm install や ビルドコマンド を追加してください。


    mainブランチへのマージをトリガーにする設定ポイント

    • on.push.branches に main を指定すると、main への 直接プッシュ と マージ の両方が対象になります。

    • PR のマージだけを対象にしたい場合は、on.pull_request.merged を併用すると安全です。


    ステージング環境へデプロイするジョブの流れ

    1. コード取得 – actions/checkout で最新のリビジョンを取得

    2. 依存関係インストール – npm ci や yarn install を実行

    3. ビルド – npm run build(React/Next.js など)

    4. 転送 – rsync や scp でステージングサーバへコピー

    5. サーバ再起動(必要なら) – ssh 経由で systemctl restart app などを実行


    注意点とよくあるエラー

    • シークレットが漏れないように、リポジトリ設定で STAGING_SSH_KEY を必ず 暗号化されたシークレット として保存してください。

    • rsync のパスがサーバ側で異なると command not found エラーになるので、事前にサーバにインストールを確認しましょう。

    • デプロイ後にキャッシュが残っていると古いファイルが表示されることがあります。--delete オプションで不要ファイルを削除すると解決します。


    詳しい手順はこちら

    あなたへのおすすめ