From de9f2c853d8e28c1f9266fbc749199dc0f9b3230 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Fri, 17 Apr 2026 11:53:00 +0200 Subject: [PATCH] feat(deploy): add force deploy detection to deployment workflow - Implemented logic to check for a `[force-deploy]` tag in the latest commit message, allowing for a forced deployment regardless of detected changes. - Updated deployment conditions to include force deploy status, enabling more flexible deployment options based on commit messages. - Enhanced sync step to trigger on force deploy, ensuring content updates are applied even without file changes. --- .gitea/workflows/deploy.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 3e825b3..b1fb2fd 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -30,6 +30,13 @@ jobs: git diff --name-only "$BASE" "$HEAD" > changed-files.txt cat changed-files.txt + COMMIT_MESSAGE="$(git log -1 --pretty=%B "$HEAD" || true)" + + if echo "$COMMIT_MESSAGE" | grep -qi '\[force-deploy\]'; then + echo "force_deploy=true" >> "$GITHUB_OUTPUT" + else + echo "force_deploy=false" >> "$GITHUB_OUTPUT" + fi if grep -E '^(backend/scripts/.*(bisaya|course|didactics|vocab)|backend/sql/.*vocab|backend/migrations/.*vocab|docs/.*(COURSE|VOCAB|BISAYA|GERMAN_FOR_BISAYA))' changed-files.txt; then echo "changed=true" >> "$GITHUB_OUTPUT" @@ -76,10 +83,12 @@ jobs: "echo SSH OK" - name: Run deployment script - if: steps.vocab_course_changes.outputs.app_changed == 'true' + if: steps.vocab_course_changes.outputs.app_changed == 'true' || steps.vocab_course_changes.outputs.force_deploy == 'true' run: | DEPLOY_FLAGS="" - if [ "${{ steps.vocab_course_changes.outputs.backend_app_changed }}" = "true" ] && [ "${{ steps.vocab_course_changes.outputs.frontend_changed }}" != "true" ]; then + if [ "${{ steps.vocab_course_changes.outputs.force_deploy }}" = "true" ]; then + DEPLOY_FLAGS="" + elif [ "${{ steps.vocab_course_changes.outputs.backend_app_changed }}" = "true" ] && [ "${{ steps.vocab_course_changes.outputs.frontend_changed }}" != "true" ]; then DEPLOY_FLAGS="--skip-frontend" elif [ "${{ steps.vocab_course_changes.outputs.frontend_changed }}" = "true" ] && [ "${{ steps.vocab_course_changes.outputs.backend_app_changed }}" != "true" ]; then DEPLOY_FLAGS="--skip-backend" @@ -99,12 +108,12 @@ jobs: "/home/tsschulz/deploy-yourpart-bluegreen.sh ${DEPLOY_TARGET} ${DEPLOY_FLAGS}" - name: Skip full deployment (no app changes) - if: steps.vocab_course_changes.outputs.app_changed != 'true' + if: steps.vocab_course_changes.outputs.app_changed != 'true' && steps.vocab_course_changes.outputs.force_deploy != 'true' run: | echo "Kein Full-Deploy: Es wurden keine Frontend/Backend-App-Dateien geƤndert." - name: Sync vocab course content - if: steps.vocab_course_changes.outputs.changed == 'true' + if: steps.vocab_course_changes.outputs.changed == 'true' || steps.vocab_course_changes.outputs.force_deploy == 'true' run: | ssh -i ~/.ssh/id_ed25519 \ -p "${{ secrets.PROD_PORT }}" \