🌟

【Task-PRG】GitHub Actionsの設定:EC2への自動デプロイ

2024/05/20に公開

はじめに

https://zenn.dev/tomo0108/books/92b1b7a60c7737
アプリ開発全体の流れは、こちらの本にまとめています。

GitHub ActionsによるEC2デプロイの設定

『Task-PRG』をEC2インスタンスにデプロイするために、GitHub Actionsを設定する手順を説明します。

ステップ1: リポジトリの準備

1.1 リポジトリの作成

GitHubで新しいリポジトリを作成し、ローカルリポジトリをセットアップします。

bashコマンド
git init
git remote add origin https://github.com/your-username/task-rpg.git

1.2 ファイルの追加

プロジェクトファイルを追加し、初期コミットを行います。

bashコマンド
git add .
git commit -m "Initial commit"
git push origin main

ステップ2: GitHub Secretsの設定

2.1 GitHub Secretsの設定

GitHubリポジトリの設定ページからSecretsを設定します。
必要なSecretsは以下の通りです。

  • SSH_PRIVATE_KEY: EC2インスタンスにアクセスするためのSSH秘密鍵
  • EC2_USER_NAME: EC2インスタンスのユーザー名(通常はec2-user
  • EC2_HOST_NAME: EC2インスタンスのホスト名
  • REPOSITORY_URL: GitHubリポジトリのURL
  • DB_HOST: RDSインスタンスのエンドポイント
  • DB_USER: RDSインスタンスのユーザー名
  • DB_PASSWORD: RDSインスタンスのパスワード
  • DB_NAME: RDSインスタンスのデータベース名

ステップ3: GitHub Actionsの設定

3.1 ディレクトリ構造の作成

.github/workflowsディレクトリを作成し、その中にdeploy.ymlファイルを追加します。

/task-rpg
└── .github
    └── workflows
        └── deploy.yml

3.2 deploy.ymlの作成

deploy.yml
name: Deploy to EC2

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '16'

    - name: Install dependencies
      run: npm install

    - name: Deploy to EC2
      env:
        SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        EC2_USER_NAME: ${{ secrets.EC2_USER_NAME }}
        EC2_HOST_NAME: ${{ secrets.EC2_HOST_NAME }}
        DB_HOST: ${{ secrets.DB_HOST }}
        DB_USER: ${{ secrets.DB_USER }}
        DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
        DB_NAME: ${{ secrets.DB_NAME }}
      run: |
        # 秘密鍵をファイルに保存
        echo "$SSH_PRIVATE_KEY" > /tmp/ssh_key
        chmod 600 /tmp/ssh_key

        # サーバーに接続してデプロイ
        ssh -o StrictHostKeyChecking=no -i /tmp/ssh_key $EC2_USER_NAME@$EC2_HOST_NAME << 'EOF'
          # アプリケーションディレクトリに移動
          cd /home/ec2-user/task-rpg

          # Gitリポジトリから最新の変更を取得
          git pull origin main

          # 依存関係をインストール
          npm install

          # 環境変数を設定
          export DB_HOST=${DB_HOST}
          export DB_USER=${DB_USER}
          export DB_PASSWORD=${DB_PASSWORD}
          export DB_NAME=${DB_NAME}

          # サーバーを再起動
          pm2 restart all || pm2 start index.js
        EOF

3.3 デプロイの実行

GitHubリポジトリに変更をプッシュすると、GitHub Actionsが自動的にトリガーされ、EC2インスタンスにアプリケーションがデプロイされます。

bashコマンド
git add .
git commit -m "Add GitHub Actions for EC2 deployment"
git push origin main

Discussion