From 9c404b69fc88637c166813d698b22c28e459076a Mon Sep 17 00:00:00 2001 From: ghost062591 Date: Sat, 25 Oct 2025 11:24:00 -0400 Subject: [PATCH] added deploy.yml workflow --- .gitea/workflows/deploy.yml | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..9c7d735 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,57 @@ +name: Deploy to Swarm + +on: + push: + branches: + - main # Only deploys from main branch (staging is safe!) + paths: + - 'stacks/**/stack.yml' + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Detect changed stacks + id: changes + run: | + if [ "${{ github.event.before }}" = "0000000000000000000000000000000000000000" ]; then + echo "⚠️ Initial commit - skipping auto-deploy" + echo "changed=" >> $GITHUB_OUTPUT + exit 0 + fi + + CHANGED=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep "stacks/.*/stack.yml$" || true) + echo "changed=$CHANGED" >> $GITHUB_OUTPUT + + - name: Deploy changed stacks + if: steps.changes.outputs.changed != '' + run: | + echo "📋 Changed stacks:" + echo "${{ steps.changes.outputs.changed }}" + + for file in ${{ steps.changes.outputs.changed }}; do + stack_name=$(basename $(dirname "$file")) + + echo "🚀 Deploying: $stack_name" + + if docker stack deploy -c "$file" "$stack_name" --with-registry-auth; then + echo "✅ $stack_name deployed" + else + echo "❌ $stack_name failed" + exit 1 + fi + done + + - name: Show deployment status + if: always() + run: | + echo "📊 Current stacks:" + docker stack ls + echo "" + echo "📦 Services:" + docker service ls \ No newline at end of file