name: Deploy To Production on: push: branches: - main jobs: build: environment: prod runs-on: node steps: - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 18.x - run: npm ci - run: npm run build - run: npm test - name: "Copy files over to location" run: cp -r . ${{ secrets.PROD_REPO_PATH }} deploy: environment: prod needs: build runs-on: node steps: - uses: https://github.com/appleboy/ssh-action@v1.0.0 env: DB_NAME: ${{ secrets.PROD_DB_NAME }} DB_AUTH_USER: ${{ secrets.PROD_DB_AUTH_USER }} DB_AUTH_PASS: ${{ secrets.PROD_DB_AUTH_PASS }} DB_HOST: ${{ secrets.PROD_DB_HOST }} DB_PORT: ${{ secrets.PROD_DB_PORT }} DB_ROOT_HOST: ${{ secrets.PROD_DB_ROOT_HOST }} DB_SYNC: ${{ secrets.PROD_DB_SYNC }} DB_LOGGING: ${{ secrets.PROD_DB_LOGGING }} DB_DATA_LOCATION: ${{ secrets.PROD_DB_DATA_LOCATION }} SERVER_PATH: ${{ secrets.PROD_SSH_SERVER_PATH }} BOT_TOKEN: ${{ secrets.PROD_BOT_TOKEN }} BOT_VER: ${{ vars.PROD_BOT_VER }} BOT_AUTHOR: ${{ vars.PROD_BOT_AUTHOR }} BOT_OWNERID: ${{ vars.PROD_BOT_OWNERID }} BOT_CLIENTID: ${{ vars.PROD_BOT_CLIENTID }} BOT_ENV: ${{ vars.PROD_BOT_ENV }} BOT_ADMINS: ${{ vars.PROD_BOT_ADMINS }} ABOUT_FUNDING: ${{ vars.PROD_ABOUT_FUNDING }} ABOUT_REPO: ${{ vars.PROD_ABOUT_REPO }} DATA_DIR: ${{ secrets.PROD_DATA_DIR }} GDRIVESYNC_AUTO: ${{ vars.PROD_GDRIVESYNC_AUTO }} EXPRESS_PORT: ${{ secrets.PROD_EXPRESS_PORT }} BOT_LOGLEVEL: ${{ vars.PROD_BOT_LOGLEVEL }} with: host: ${{ secrets.PROD_SSH_HOST }} username: ${{ secrets.PROD_SSH_USER }} key: ${{ secrets.PROD_SSH_KEY }} port: ${{ secrets.PROD_SSH_PORT }} envs: DB_NAME,DB_AUTH_USER,DB_AUTH_PASS,DB_HOST,DB_PORT,DB_ROOT_HOST,DB_SYNC,DB_LOGGING,DB_DATA_LOCATION,BOT_TOKEN,BOT_VER,BOT_AUTHOR,BOT_OWNERID,BOT_CLIENTID,ABOUT_FUNDING,ABOUT_REPO,BOT_ENV,BOT_ADMINS,DATA_DIR,GDRIVESYNC_AUTO,SERVER_PATH,EXPRESS_PORT,BOT_LOGLEVEL script: | source .sshrc \ && cd /home/vylpes/apps/card-drop/card-drop_prod \ && docker compose down \ && (pm2 stop card-drop_prod || true) \ && (pm2 delete card-drop_prod || true) \ && docker compose up -d \ && sleep 10 \ && yarn run db:up \ && pm2 start --name card-drop_prod dist/bot.js