ci: add GitHub Actions deploy workflows for staging and production

This commit is contained in:
CCS Admin 2026-02-27 13:48:19 +00:00
parent fd25fe78e4
commit 5204223113
2 changed files with 89 additions and 0 deletions

49
.github/workflows/deploy-production.yml vendored Normal file
View file

@ -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 ==="

40
.github/workflows/deploy-staging.yml vendored Normal file
View file

@ -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 ==="