diff --git a/products/01-llm-cost-router/.gitea/workflows/ci.yml b/.gitea/workflows/ci-p1-route.yml similarity index 55% rename from products/01-llm-cost-router/.gitea/workflows/ci.yml rename to .gitea/workflows/ci-p1-route.yml index 829f152..6fb7a41 100644 --- a/products/01-llm-cost-router/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci-p1-route.yml @@ -1,12 +1,14 @@ -name: CI +name: CI — P1 Route (Rust) on: push: branches: [main] + paths: ['products/01-llm-cost-router/**'] pull_request: + paths: ['products/01-llm-cost-router/**'] jobs: test: - runs-on: ubuntu-latest # Gitea runner on NAS + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -20,7 +22,7 @@ jobs: ~/.cargo/registry ~/.cargo/git target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-${{ hashFiles('products/01-llm-cost-router/Cargo.lock') }} - name: Run tests run: cargo test --workspace @@ -33,24 +35,3 @@ jobs: - name: Format check run: cargo fmt --check working-directory: products/01-llm-cost-router - - ui-build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: '22' - - - name: Install deps - run: npm ci - working-directory: products/01-llm-cost-router/ui - - - name: Type check - run: npx tsc --noEmit - working-directory: products/01-llm-cost-router/ui - - - name: Build - run: npm run build - working-directory: products/01-llm-cost-router/ui diff --git a/products/02-iac-drift-detection/.gitea/workflows/ci.yml b/.gitea/workflows/ci-p2-drift.yml similarity index 59% rename from products/02-iac-drift-detection/.gitea/workflows/ci.yml rename to .gitea/workflows/ci-p2-drift.yml index 7e69ec8..a427d42 100644 --- a/products/02-iac-drift-detection/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci-p2-drift.yml @@ -1,11 +1,13 @@ -name: CI +name: CI — P2 Drift (Go + Node) on: push: branches: [main] + paths: ['products/02-iac-drift-detection/**'] pull_request: + paths: ['products/02-iac-drift-detection/**'] jobs: - agent-test: + agent: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -22,7 +24,7 @@ jobs: run: go vet ./... working-directory: products/02-iac-drift-detection/agent - saas-test: + saas: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -42,21 +44,3 @@ jobs: - name: Test run: npm test working-directory: products/02-iac-drift-detection/saas - - agent-build: - runs-on: ubuntu-latest - needs: agent-test - if: github.ref == 'refs/heads/main' - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-go@v5 - with: - go-version: '1.22' - - - name: Build agent binaries - run: | - GOOS=linux GOARCH=amd64 go build -o dist/drift-linux-amd64 ./cmd/drift - GOOS=darwin GOARCH=arm64 go build -o dist/drift-darwin-arm64 ./cmd/drift - GOOS=windows GOARCH=amd64 go build -o dist/drift-windows-amd64.exe ./cmd/drift - working-directory: products/02-iac-drift-detection/agent diff --git a/products/03-alert-intelligence/.gitea/workflows/ci.yml b/.gitea/workflows/ci-p3-alert.yml similarity index 81% rename from products/03-alert-intelligence/.gitea/workflows/ci.yml rename to .gitea/workflows/ci-p3-alert.yml index 29eae3e..43daf06 100644 --- a/products/03-alert-intelligence/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci-p3-alert.yml @@ -1,8 +1,10 @@ -name: CI +name: CI — P3 Alert on: push: branches: [main] + paths: ['products/03-alert-intelligence/**'] pull_request: + paths: ['products/03-alert-intelligence/**'] jobs: test: diff --git a/products/04-lightweight-idp/.gitea/workflows/ci.yml b/.gitea/workflows/ci-p4-portal.yml similarity index 82% rename from products/04-lightweight-idp/.gitea/workflows/ci.yml rename to .gitea/workflows/ci-p4-portal.yml index b2d8095..34b451b 100644 --- a/products/04-lightweight-idp/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci-p4-portal.yml @@ -1,8 +1,10 @@ -name: CI +name: CI — P4 Portal on: push: branches: [main] + paths: ['products/04-lightweight-idp/**'] pull_request: + paths: ['products/04-lightweight-idp/**'] jobs: test: diff --git a/products/05-aws-cost-anomaly/.gitea/workflows/ci.yml b/.gitea/workflows/ci-p5-cost.yml similarity index 82% rename from products/05-aws-cost-anomaly/.gitea/workflows/ci.yml rename to .gitea/workflows/ci-p5-cost.yml index ee13a05..f71c52a 100644 --- a/products/05-aws-cost-anomaly/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci-p5-cost.yml @@ -1,8 +1,10 @@ -name: CI +name: CI — P5 Cost on: push: branches: [main] + paths: ['products/05-aws-cost-anomaly/**'] pull_request: + paths: ['products/05-aws-cost-anomaly/**'] jobs: test: diff --git a/products/06-runbook-automation/.gitea/workflows/ci.yml b/.gitea/workflows/ci-p6-run.yml similarity index 56% rename from products/06-runbook-automation/.gitea/workflows/ci.yml rename to .gitea/workflows/ci-p6-run.yml index 617c780..9e2cbbb 100644 --- a/products/06-runbook-automation/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci-p6-run.yml @@ -1,27 +1,13 @@ -name: CI +name: CI — P6 Run on: push: branches: [main] + paths: ['products/06-runbook-automation/**'] pull_request: + paths: ['products/06-runbook-automation/**'] jobs: - agent-test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - - - name: Test agent - run: cargo test - working-directory: products/06-runbook-automation/agent - - - name: Clippy - run: cargo clippy -- -D warnings - working-directory: products/06-runbook-automation/agent - - saas-test: + saas: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/products/01-llm-cost-router/.gitea/workflows/benchmark.yml b/products/01-llm-cost-router/.gitea/workflows/benchmark.yml deleted file mode 100644 index 95e4a1f..0000000 --- a/products/01-llm-cost-router/.gitea/workflows/benchmark.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Latency Benchmark -on: - push: - branches: [main] - paths: ['products/01-llm-cost-router/src/proxy/**'] - -jobs: - benchmark: - runs-on: ubuntu-latest # Gitea runner on NAS — consistent CPU - steps: - - uses: actions/checkout@v4 - - - uses: dtolnay/rust-toolchain@stable - - - name: Run proxy latency benchmark - run: cargo bench --bench proxy_latency 2>&1 | tee bench-output.txt - working-directory: products/01-llm-cost-router - - - name: Assert P99 < 5ms - run: | - # Extract P99 from criterion output - P99=$(grep -oP 'median\s+\K[\d.]+' bench-output.txt | head -1 || echo "0") - echo "P99 latency: ${P99}ns" - # 5ms = 5,000,000ns - if [ "$(echo "$P99 > 5000000" | bc -l 2>/dev/null || echo 0)" = "1" ]; then - echo "❌ P99 latency ${P99}ns exceeds 5ms budget" - exit 1 - fi - echo "✅ P99 within budget" - working-directory: products/01-llm-cost-router diff --git a/products/01-llm-cost-router/.gitea/workflows/deploy.yml b/products/01-llm-cost-router/.gitea/workflows/deploy.yml deleted file mode 100644 index 6f14963..0000000 --- a/products/01-llm-cost-router/.gitea/workflows/deploy.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Deploy -on: - push: - branches: [main] - paths: ['products/01-llm-cost-router/src/**', 'products/01-llm-cost-router/Cargo.*'] - -jobs: - deploy-proxy: - runs-on: ubuntu-latest - needs: [] - steps: - - uses: actions/checkout@v4 - - - uses: superfly/flyctl-actions/setup-flyctl@master - - - name: Deploy proxy to Fly.io - run: flyctl deploy --config fly.proxy.toml --remote-only - working-directory: products/01-llm-cost-router - env: - FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} - - deploy-api: - runs-on: ubuntu-latest - needs: [] - steps: - - uses: actions/checkout@v4 - - - uses: superfly/flyctl-actions/setup-flyctl@master - - - name: Deploy API to Fly.io - run: flyctl deploy --config fly.api.toml --remote-only - working-directory: products/01-llm-cost-router - env: - FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} - - deploy-ui: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: '22' - - - name: Build UI - run: | - cd products/01-llm-cost-router/ui - npm ci - npm run build - - - name: Deploy to Cloudflare Pages - run: | - npx wrangler pages deploy products/01-llm-cost-router/ui/dist \ - --project-name=dd0c-route \ - --branch=main - env: - CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} diff --git a/products/02-iac-drift-detection/.gitea/workflows/ci-saas.yml b/products/02-iac-drift-detection/.gitea/workflows/ci-saas.yml deleted file mode 100644 index e95b943..0000000 --- a/products/02-iac-drift-detection/.gitea/workflows/ci-saas.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: CI - SaaS -on: - push: - branches: [main] - paths: - - 'products/02-iac-drift-detection/saas/**' - pull_request: - paths: - - 'products/02-iac-drift-detection/saas/**' - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: '22' - - - name: Install deps - run: npm ci - working-directory: products/02-iac-drift-detection/saas - - - name: Type check - run: npx tsc --noEmit - working-directory: products/02-iac-drift-detection/saas - - - name: Test - run: npm test - working-directory: products/02-iac-drift-detection/saas diff --git a/products/02-iac-drift-detection/.gitea/workflows/deploy.yml b/products/02-iac-drift-detection/.gitea/workflows/deploy.yml deleted file mode 100644 index f5d557a..0000000 --- a/products/02-iac-drift-detection/.gitea/workflows/deploy.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Deploy -on: - push: - branches: [main] - paths: ['products/02-iac-drift-detection/saas/**'] - -jobs: - deploy-saas: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: superfly/flyctl-actions/setup-flyctl@master - - - name: Deploy SaaS to Fly.io - run: flyctl deploy --config fly.toml --remote-only - working-directory: products/02-iac-drift-detection/saas - env: - FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} diff --git a/products/marketing/site/src/pages/alert.astro b/products/marketing/site/src/pages/alert.astro index 67fe5bf..543298b 100644 --- a/products/marketing/site/src/pages/alert.astro +++ b/products/marketing/site/src/pages/alert.astro @@ -4,7 +4,7 @@ import Footer from '../components/Footer.astro'; import CTA from '../components/CTA.astro'; --- - +
diff --git a/products/marketing/site/src/pages/drift.astro b/products/marketing/site/src/pages/drift.astro index 4805b1e..116defa 100644 --- a/products/marketing/site/src/pages/drift.astro +++ b/products/marketing/site/src/pages/drift.astro @@ -4,7 +4,7 @@ import Footer from '../components/Footer.astro'; import CTA from '../components/CTA.astro'; --- - +
diff --git a/products/marketing/site/src/pages/portal.astro b/products/marketing/site/src/pages/portal.astro index dc81ff2..52a57bb 100644 --- a/products/marketing/site/src/pages/portal.astro +++ b/products/marketing/site/src/pages/portal.astro @@ -4,7 +4,7 @@ import Footer from '../components/Footer.astro'; import CTA from '../components/CTA.astro'; --- - +
diff --git a/products/marketing/site/src/pages/route.astro b/products/marketing/site/src/pages/route.astro index f81ed01..5a64da6 100644 --- a/products/marketing/site/src/pages/route.astro +++ b/products/marketing/site/src/pages/route.astro @@ -4,7 +4,7 @@ import Footer from '../components/Footer.astro'; import CTA from '../components/CTA.astro'; --- - +