From c2a5bd7a85e054fda1ae6ef10a0dc4de5b5e5118 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Thu, 15 Jan 2026 14:55:27 +0100 Subject: [PATCH] Migrate to Forgejo --- .forgejo/workflows/deploy-preprod.yml | 58 +++++++++++++++++++++++++++ .forgejo/workflows/deploy-prod.yml | 58 +++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 .forgejo/workflows/deploy-preprod.yml create mode 100644 .forgejo/workflows/deploy-prod.yml diff --git a/.forgejo/workflows/deploy-preprod.yml b/.forgejo/workflows/deploy-preprod.yml new file mode 100644 index 0000000..441c01b --- /dev/null +++ b/.forgejo/workflows/deploy-preprod.yml @@ -0,0 +1,58 @@ +name: Deploy Preprod + +on: + push: + branches: + - preprod + +jobs: + build-and-deploy: + name: Build and Deploy to Preprod + runs-on: docker + container: + image: forgejo-ci-node:latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Cache node modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} + + - name: Install npm dependencies + run: npm install + + - name: Build frontend (preprod) + run: npm run build:preprod + + - name: Install composer dependencies + run: | + cd dist + composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-gd + + - name: Deploy via rsync + env: + USERNAME: ${{ secrets.USERNAME }} + PASSWORD: ${{ secrets.PASSWORD }} + HOST: ${{ secrets.HOST }} + PREPROD_PATH: ${{ secrets.PREPROD_PATH }} + run: | + cd dist + + rsync_deploy() { + local src=$1 + local dst=$2 + local exclude=$3 + cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" + [[ -n $exclude ]] && cmd="$cmd $exclude" + cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" + echo "Deploying $src to $dst" + eval $cmd + } + + rsync_deploy site/ "$PREPROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" + rsync_deploy vendor/ "$PREPROD_PATH/vendor/" + rsync_deploy kirby/ "$PREPROD_PATH/kirby/" + rsync_deploy assets/ "$PREPROD_PATH/assets/" "--exclude 'tiles/'" diff --git a/.forgejo/workflows/deploy-prod.yml b/.forgejo/workflows/deploy-prod.yml new file mode 100644 index 0000000..4943bb2 --- /dev/null +++ b/.forgejo/workflows/deploy-prod.yml @@ -0,0 +1,58 @@ +name: Deploy Production + +on: + push: + branches: + - main + +jobs: + build-and-deploy: + name: Build and Deploy to Production + runs-on: docker + container: + image: forgejo-ci-node:latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Cache node modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} + + - name: Install npm dependencies + run: npm install + + - name: Build frontend (production) + run: npm run build + + - name: Install composer dependencies + run: | + cd dist + composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-gd + + - name: Deploy via rsync + env: + USERNAME: ${{ secrets.USERNAME }} + PASSWORD: ${{ secrets.PASSWORD }} + HOST: ${{ secrets.HOST }} + PROD_PATH: ${{ secrets.PROD_PATH }} + run: | + cd dist + + rsync_deploy() { + local src=$1 + local dst=$2 + local exclude=$3 + cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" + [[ -n $exclude ]] && cmd="$cmd $exclude" + cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" + echo "Deploying $src to $dst" + eval $cmd + } + + rsync_deploy site/ "$PROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" + rsync_deploy vendor/ "$PROD_PATH/vendor/" + rsync_deploy kirby/ "$PROD_PATH/kirby/" + rsync_deploy assets/ "$PROD_PATH/assets/" "--exclude 'tiles/'"