Fix PM2 command not found in CI/CD by using full path and loading env… #12
This file contains hidden or 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: Node.js CI/CD | |
| on: | |
| push: | |
| branches: [master, main] | |
| pull_request: | |
| branches: [master, main] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: "18" | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Run Tests | |
| run: npm test | |
| deploy: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Install Node.js via nvm (if not installed) | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: 22 | |
| script: | | |
| curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - | |
| sudo apt-get install -y nodejs | |
| - name: Navigate to project directory and pull the latest changes | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: 22 | |
| script: | | |
| cd ~/CI-CD-Integration-IN-NodeJS | |
| git pull origin master | |
| - name: Install dependencies with updated Node.js | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: 22 | |
| script: | | |
| cd ~/CI-CD-Integration-IN-NodeJS | |
| npm install | |
| - name: Restart the PM2 process | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: 22 | |
| script: | | |
| cd /usr/local/bin && pm2 restart test_server # <-- Use full path here! | |
| - name: Check PM2 logs | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: 22 | |
| script: | | |
| cd /usr/local/bin && pm2 logs test_server # <-- Use full path here! | |
| - name: Check PM2 status | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: 22 | |
| script: | | |
| cd /usr/local/bin && pm2 status test_server # <-- Use full path here! | |
| - name: Check if the server is running | |
| uses: appleboy/[email protected] | |
| with: | |
| host: ${{ secrets.SERVER_IP }} | |
| username: ${{ secrets.SERVER_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| port: 22 | |
| script: | | |
| curl -I http://localhost:3000 |