From f3da70e8307d1d7d38cd9715577ab859193c4b8e Mon Sep 17 00:00:00 2001 From: bip production <119274726+bipproduction@users.noreply.github.com> Date: Sun, 23 Feb 2025 10:37:48 +0800 Subject: [PATCH] Update build.yml --- .github/workflows/build.yml | 38 ++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 65af09e6..a066115b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -119,8 +119,18 @@ jobs: source: "." target: "/var/www/projects/${{ env.APP_NAME }}/releases/${{ env.APP_VERSION }}" - # Ensure project directory exists - - name: reload server + # Kirim file .env ke server + - name: Upload .env to server + uses: appleboy/scp-action@master + with: + host: ${{ secrets.VPS_HOST }} + username: ${{ secrets.VPS_USERNAME }} + key: ${{ secrets.VPS_SSH_KEY }} + source: ".env" + target: "/var/www/projects/${{ env.APP_NAME }}/releases/${{ env.APP_VERSION }}/" + + # manage deployment + - name: manage deployment uses: appleboy/ssh-action@master with: host: ${{ secrets.VPS_HOST }} @@ -138,23 +148,33 @@ jobs: # Install PM2 if not already installed if ! command -v pm2 &> /dev/null; then echo "PM2 is not installed. Installing now..." - npm install -g pm2 + bun install --global pm2 + fi + + # Install dotenv-cli if not already installed + if ! command -v dotenv &> /dev/null; then + echo "dotenv-cli is not installed. Installing now..." + bun install --global dotenv-cli fi # Find an available port PORT=$(curl -s -X GET https://wibu-bot.wibudev.com/api/find-port | jq -r '.[0]') + if [ -z "$PORT" ] || ! [[ "$PORT" =~ ^[0-9]+$ ]]; then + echo "Invalid or missing port from API." + exit 1 + fi # Deploy to VPS cd /var/www/projects/${{ env.APP_NAME }}/releases/${{ env.APP_VERSION }} # Set environment variables - echo "DATABASE_URL=postgresql://${{ secrets.POSTGRES_USER }}:${{ secrets.POSTGRES_PASSWORD }}@localhost:5433/${{ secrets.POSTGRES_DB }}?schema=public" >> .env - echo "PORT=$PORT" >> .env - echo "NEXT_PUBLIC_WIBU_URL=localhost:$PORT" >> .env - echo "WIBU_UPLOAD_DIR=/uploads" >> .env + dotenv set DATABASE_URL="postgresql://${{ secrets.POSTGRES_USER }}:${{ secrets.POSTGRES_PASSWORD }}@localhost:5433/${{ secrets.POSTGRES_DB }}?schema=public" + dotenv set PORT="$PORT" + dotenv set NEXT_PUBLIC_WIBU_URL="localhost:$PORT" + dotenv set WIBU_UPLOAD_DIR="/var/www/projects/${{ env.APP_NAME }}/uploads" # Create uploads directory - mkdir -p /uploads + mkdir -p /var/www/projects/${{ env.APP_NAME }}/uploads # Install dependencies bun install --production @@ -169,7 +189,7 @@ jobs: bun prisma db seed || echo "tidak membutuhkan seed" # Restart the application - pm2 reload ${{ env.APP_NAME }} || pm2 start "bun run start --port $PORT" --name "${{ env.APP_NAME }}" --namespace ${{ env.APP_NAME }} + pm2 reload ${{ env.APP_NAME }} || pm2 start "bun run start --port $PORT" --name "${{ env.APP_NAME }}-$PORT" --namespace "${{ env.APP_NAME }}" # Step 4: Set BUILD_STATUS based on success or failure - name: Set BUILD_STATUS