🌟
【Task-PRG】GitHub Actionsの設定:EC2への自動デプロイ
はじめに
アプリ開発全体の流れは、こちらの本にまとめています。
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
deploy.yml
の作成
3.2 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