mirror of
https://github.com/complexcaresolutions/frontend.sensualmoment.de.git
synced 2026-03-17 17:23:54 +00:00
ci: add GitHub Actions deploy workflows for staging and production
This commit is contained in:
parent
fd25fe78e4
commit
5204223113
2 changed files with 89 additions and 0 deletions
49
.github/workflows/deploy-production.yml
vendored
Normal file
49
.github/workflows/deploy-production.yml
vendored
Normal 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
40
.github/workflows/deploy-staging.yml
vendored
Normal 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 ==="
|
||||||
Loading…
Reference in a new issue