diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index dd0b656..6d99f76 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -2,7 +2,7 @@ name: Deploy Stacks on: push: - branches: [master] + branches: [master, dev] paths: - 'stacks/**' workflow_dispatch: @@ -11,7 +11,8 @@ env: STACKS_DIR: /var/core jobs: - deploy: + deploy-prod: + if: ${{ github.ref == 'refs/heads/master' }} runs-on: ubuntu-prod steps: - uses: actions/checkout@v4 @@ -59,3 +60,53 @@ jobs: - name: Show running containers run: docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | head -20 + + deploy-dev: + if: ${{ github.ref == 'refs/heads/dev' }} + runs-on: ubuntu-dev + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: Find and deploy changed stacks + env: + DOMAIN: ${{ secrets.DOMAIN }} + run: | + # Find changed stacks + STACKS=$(git diff --name-only HEAD~1 HEAD 2>/dev/null | grep '^stacks/' | cut -d'/' -f2 | sort -u || echo "") + + if [ -z "$STACKS" ]; then + echo "No stacks changed, deploying all..." + STACKS=$(ls stacks/) + fi + + echo "Deploying: $STACKS" + + for stack in $STACKS; do + echo "==========================================" + echo "Deploying $stack..." + echo "==========================================" + + STACK_DIR="${{ env.STACKS_DIR }}/$stack" + mkdir -p "$STACK_DIR" + + # Copy files + cp -r stacks/$stack/* "$STACK_DIR/" + + # Create .env from template if exists + if [ -f "$STACK_DIR/.env.template" ]; then + envsubst < "$STACK_DIR/.env.template" > "$STACK_DIR/.env" + fi + + # Deploy + cd "$STACK_DIR" + docker compose pull --ignore-pull-failures 2>/dev/null || true + docker compose up -d --remove-orphans + + echo "✅ Deployed $stack" + echo "" + done + + - name: Show running containers + run: docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | head -20 diff --git a/stacks/watchtower/docker-compose.yml b/stacks/watchtower/docker-compose.yml index f0c5186..5498573 100644 --- a/stacks/watchtower/docker-compose.yml +++ b/stacks/watchtower/docker-compose.yml @@ -1,4 +1,5 @@ services: + # Dev deploy trigger (no functional change) watchtower: image: containrrr/watchtower:latest container_name: watchtower