From 6f32892f0e26517087bbf2f698ac539a0e74d9fb Mon Sep 17 00:00:00 2001 From: serhiimosiiash Date: Fri, 19 Dec 2025 17:14:19 +0200 Subject: [PATCH] Feat: Add Sequential Agile Pipeline (4 Agents) --- .gitea/workflows/agile-squad.yaml | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 .gitea/workflows/agile-squad.yaml diff --git a/.gitea/workflows/agile-squad.yaml b/.gitea/workflows/agile-squad.yaml new file mode 100644 index 0000000..e4a09c0 --- /dev/null +++ b/.gitea/workflows/agile-squad.yaml @@ -0,0 +1,100 @@ +name: Agile Squad Operations +run-name: 🚀 Antigravity Daily Cycle + +on: + schedule: + # UTC Time: 07:00(09 UA), 11:00(13 UA), 15:00(17 UA), 19:00(21 UA) + - cron: '0 7,11,15,19 * * *' + # Кнопка для ручного запуску (щоб перевірити прямо зараз) + workflow_dispatch: + +jobs: + # === АГЕНТ 1: РАНКОВИЙ ЗБІР (Standup) === + standup-check: + runs-on: ubuntu-latest + container: node:16-bullseye + steps: + - name: 📞 Check Connectivity + run: | + apt-get update && apt-get install -y curl + # Перевіряємо, чи відповідає Gitea (код 200/300) + # Якщо Gitea лежить - немає сенсу працювати далі + curl -f -I https://git.smagentsconsulting.uk/ || exit 1 + echo "✅ Gitea is Alive. Starting the day..." + + # === АГЕНТ 2: ОСНОВНА РОБОТА (Worker) === + heavy-worker: + needs: standup-check # Чекаємо, поки пройде перевірка зв'язку + runs-on: ubuntu-latest + container: + image: node:16-bullseye + # Прокидаємо сокет, щоб запускати docker compose + volumes: + - /var/run/docker.sock:/var/run/docker.sock + steps: + - name: 📥 Check out repository + uses: actions/checkout@v3 + + - name: 🛠️ Setup Docker Tools + run: | + # Встановлюємо найновіший Docker CLI вручну (як ми вже робили) + apt-get update && apt-get install -y curl tar + curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-26.1.3.tgz -o docker.tgz + tar xzvf docker.tgz && mv docker/docker /usr/local/bin/ && chmod +x /usr/local/bin/docker + + - name: 🔨 Run Main Task + run: | + # Запускаємо основний скрипт у мережі stack_app_net + # --rm видаляє контейнер після роботи, щоб не займати місце + docker compose run --rm antigravity_core python main.py + + # === АГЕНТ 3: АУДИТОР (QA) === + qa-auditor: + needs: heavy-worker # Запускається ТІЛЬКИ після завершення роботи Worker + runs-on: ubuntu-latest + container: + image: node:16-bullseye + volumes: + - /var/run/docker.sock:/var/run/docker.sock + steps: + - name: 📥 Check out repository + uses: actions/checkout@v3 + + - name: 🛠️ Setup Docker Tools + run: | + apt-get update && apt-get install -y curl tar python3 + curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-26.1.3.tgz -o docker.tgz + tar xzvf docker.tgz && mv docker/docker /usr/local/bin/ && chmod +x /usr/local/bin/docker + + - name: 🛡️ Infrastructure Audit + run: | + # Якщо у нас є скрипт аудиту - запускаємо, якщо ні - просто статус + if [ -f audit.py ]; then + python3 audit.py + else + echo "Audit script not found, checking docker ps..." + docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}" + fi + + # === АГЕНТ 4: РЕПОРТЕР (Scrum Master) === + scrum-report: + if: always() # Виконується ЗАВЖДИ, навіть якщо Worker впав + needs: [standup-check, heavy-worker, qa-auditor] + runs-on: ubuntu-latest + steps: + - name: 📢 Daily Report + run: | + echo "=========================" + echo "📊 SPRINT REPORT" + echo "=========================" + echo "Standup Check: ${{ needs.standup-check.result }}" + echo "Heavy Worker: ${{ needs.heavy-worker.result }}" + echo "QA Audit: ${{ needs.qa-auditor.result }}" + echo "=========================" + + if [ "${{ needs.heavy-worker.result }}" == "success" ]; then + echo "✅ Day Successful. System Stable." + else + echo "❌ Issues Detected! Check logs above." + # Не ламаємо цей крок, просто повідомляємо + fi