From 812e4eb87a8e78f9b476768d1ca2b06a3970ae16 Mon Sep 17 00:00:00 2001 From: mr-forust Date: Sun, 22 Feb 2026 03:37:45 +0100 Subject: [PATCH] ci: add copy of the gitea workflow for the github --- .github/workflows/prod_deploy.yaml | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/prod_deploy.yaml diff --git a/.github/workflows/prod_deploy.yaml b/.github/workflows/prod_deploy.yaml new file mode 100644 index 0000000..0047066 --- /dev/null +++ b/.github/workflows/prod_deploy.yaml @@ -0,0 +1,41 @@ +## BINARY MODE, USE WITH THE GITHUB RUNNER BINARY INSTALLED ON THE SERVER + +name: Deploy to Server +run-name: Deploying onto server on ${{ github.ref }} +on: + push: + branches: + - main + - ci/actions +jobs: + deploy: + runs-on: [prod, self-hosted] + steps: + - name: Fetch and Diff Analysis + id: diff + run: | + cd ${{ secrets.PROD_DIR }} + git fetch origin main + CHANGES=$(git diff --name-only HEAD origin/main | cut -d/ -f1 | sort -u | tr '\n' ' ') + echo "dirs=$CHANGES" >> $GITHUB_OUTPUT + echo "Changed dirs: $CHANGES" + + - name: Sync Server Files + run: | + cd ${{ secrets.PROD_DIR }} + git reset --hard origin/main + echo "Server files synced with origin/main" + + - name: Deploy Services + run: | + cd ${{ secrets.PROD_DIR }} + for dir in ${{ steps.diff.outputs.dirs }}; do + if [ -d "$dir" ] && ([ -f "$dir/compose.yaml" ] || [ -f "$dir/docker-compose.yaml" ]); then + echo ">>> Deploying $dir" + cd "$dir" + DOCKER_BUILDKIT=1 BUILDKIT_PROGRESS=plain docker compose up -d --build --no-color + cd .. + else + echo ">>> Skipping $dir: no compose file found" + fi + done