Merge pull request #16 from WE-thing/feat/info #15
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy to EC2 | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "21.7.3" | |
- name: Cache Node.js modules | |
uses: actions/cache@v2 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install dependencies | |
run: npm ci | |
- name: Create .env file | |
run: | | |
echo "MONGO_URI=${{ secrets.MONGO_URI }}" >> .env | |
echo "AWS_S3_REGION=${{ secrets.AWS_S3_REGION }}" >> .env | |
echo "AWS_S3_ACCESS_KEY=${{ secrets.AWS_S3_ACCESS_KEY }}" >> .env | |
echo "AWS_S3_SECRET_KEY=${{ secrets.AWS_S3_SECRET_KEY }}" >> .env | |
echo "AWS_S3_BUCKET_NAME=${{ secrets.AWS_S3_BUCKET_NAME }}" >> .env | |
# Build step removed since there is no build script | |
- name: Copy files via SSH | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.EC2_DNS }} | |
username: ${{ secrets.EC2_USER_NAME }} | |
key: ${{ secrets.EC2_PRIVATE_KEY }} | |
port: 22 | |
source: "." | |
target: "/home/ubuntu/wething-backend" | |
- name: Execute remote commands via SSH | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.EC2_DNS }} | |
username: ${{ secrets.EC2_USER_NAME }} | |
key: ${{ secrets.EC2_PRIVATE_KEY }} | |
port: 22 | |
script: | | |
# Install Node.js and pm2 on Ubuntu | |
export NVM_DIR="$HOME/.nvm" | |
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Load nvm | |
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # Load nvm bash_completion | |
nvm install 21.7.3 | |
nvm use 21.7.3 | |
npm install -g pm2 | |
export PATH=$PATH:$(npm bin -g) | |
# Navigate to the application directory | |
cd /home/ubuntu/wething-backend | |
# Install project dependencies | |
npm install --production | |
# Restart or start the application with pm2 | |
pm2 stop backend | |
pm2 delete backend | |
pm2 start bin/www --name backend |