diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 0000000..fcd5638 --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,49 @@ +name: Deploy to Production + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + if: github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/main' + steps: + - name: Deploy via SSH + uses: appleboy/ssh-action@v1 + with: + host: ${{ secrets.PROD_SSH_HOST }} + port: ${{ secrets.PROD_SSH_PORT }} + username: ${{ secrets.PROD_SSH_USER }} + key: ${{ secrets.PROD_SSH_KEY }} + command_timeout: 15m + script_stop: true + script: | + echo "=== Deploying sensualmoment.de to production ===" + + su - sensualmoment_admin -s /bin/bash -c ' + set -e + export PATH=/opt/plesk/node/22/bin:/usr/local/bin:/usr/bin:/bin + cd /var/www/vhosts/sensualmoment.de/httpdocs + + echo "--- Git pull ---" + git pull origin main + + echo "--- Update payload-contracts ---" + npm update @c2s/payload-contracts + + echo "--- Install dependencies ---" + npm install --legacy-peer-deps --production=false + + echo "--- Build ---" + npm run build + + echo "--- Restart Passenger ---" + mkdir -p tmp + touch tmp/restart.txt + + date -u +%Y-%m-%dT%H:%M:%SZ > .last-successful-deploy + ' + + echo "=== Deploy complete ===" diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml new file mode 100644 index 0000000..9ff0254 --- /dev/null +++ b/.github/workflows/deploy-staging.yml @@ -0,0 +1,40 @@ +name: Deploy to Staging + +on: + push: + branches: [develop] + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + if: github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/develop' + steps: + - name: Deploy via SSH + uses: appleboy/ssh-action@v1 + with: + host: ${{ secrets.SSH_HOST }} + port: ${{ secrets.SSH_PORT }} + username: ${{ secrets.SSH_USER }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + script_stop: true + script: | + REPO="${{ github.event.repository.name }}" + DIR="$HOME/${REPO}" + + echo "=== Deploying ${REPO} to staging ===" + cd "${DIR}" || { echo "Directory ${DIR} not found"; exit 1; } + + echo "--- Git pull ---" + git pull origin develop + + echo "--- Install dependencies ---" + pnpm install --frozen-lockfile + + echo "--- Build ---" + pnpm build + + echo "--- Restart PM2 (if running) ---" + pm2 describe "${REPO}" > /dev/null 2>&1 && pm2 restart "${REPO}" || echo "No PM2 process for ${REPO}" + + echo "=== Deploy complete ==="