Skip to content

Update integration.yml #8

Update integration.yml

Update integration.yml #8

Workflow file for this run

name: Integration
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm i
- run: npm run build
unit-test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm i
- run: npm run test
deploy:
runs-on: ubuntu-latest
needs: build # Wait for the build job to finish
steps:
- name: Deploy to VM
uses: actions/checkout@v4
- name: Setup SSH Agent
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Transfer files to VM
run: |
scp -r -o StrictHostKeyChecking=no ./ SSH_USER@VM_IP:/home/SSH_USER/app
env:
VM_IP: ${{ secrets.VM_IP }}
SSH_USER: ${{ secrets.SSH_USER }}
- name: Connect to VM and deploy
run: |
ssh -o StrictHostKeyChecking=no SSH_USER@VM_IP << 'EOF'
cd /home/SSH_USER/app
npm install
npm run build
pm2 restart all || pm2 start npm --name "my-app" -- run start
EOF
env:
VM_IP: ${{ secrets.VM_IP }}
SSH_USER: ${{ secrets.SSH_USER }}