diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index dd0b656..5de533a 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 @@ -38,24 +39,74 @@ jobs: echo "==========================================" STACK_DIR="${{ env.STACKS_DIR }}/$stack" - mkdir -p "$STACK_DIR" + sudo mkdir -p "$STACK_DIR" # Copy files - cp -r stacks/$stack/* "$STACK_DIR/" + sudo 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" + sudo 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 + sudo docker compose pull --ignore-pull-failures 2>/dev/null || true + sudo 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 + run: sudo docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | head -20 + + deploy-dev: + if: ${{ github.ref == 'refs/heads/dev' }} + runs-on: ubuntu-dev:host + 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" + sudo mkdir -p "$STACK_DIR" + + # Copy files + sudo cp -r stacks/$stack/* "$STACK_DIR/" + + # Create .env from template if exists + if [ -f "$STACK_DIR/.env.template" ]; then + sudo envsubst < "$STACK_DIR/.env.template" > "$STACK_DIR/.env" + fi + + # Deploy + cd "$STACK_DIR" + sudo docker compose pull --ignore-pull-failures 2>/dev/null || true + sudo docker compose up -d --remove-orphans + + echo "✅ Deployed $stack" + echo "" + done + + - name: Show running containers + run: sudo docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | head -20