fix(ui): distinguish AI Runway integration from runtime install status #1063
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version: latest | |
| - name: Install dependencies | |
| run: bun ci | |
| - name: Build | |
| run: make compile | |
| - name: Run backend tests with coverage | |
| run: | | |
| cd backend | |
| echo "## 🧪 Backend Test Coverage" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| bun test --coverage 2>&1 | tail -20 >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| - name: Run frontend tests with coverage | |
| run: | | |
| cd frontend | |
| echo "## 🎨 Frontend Test Coverage" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| bun run test:coverage 2>&1 | tail -30 >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| controller-manifest-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Setup Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version: "1.25" | |
| cache-dependency-path: controller/go.sum | |
| - name: Install kustomize | |
| run: cd controller && make kustomize | |
| - name: Generate controller manifest | |
| run: cd controller && bin/kustomize build config/default > /tmp/controller.yaml | |
| - name: Check for manifest drift | |
| run: | | |
| if ! diff -u deploy/controller.yaml /tmp/controller.yaml; then | |
| echo "❌ deploy/controller.yaml is out of date." | |
| echo "Run 'make generate-deploy-manifests' and commit the result." | |
| exit 1 | |
| fi | |
| - name: Generate dashboard manifest | |
| run: controller/bin/kustomize build backend/config/default > /tmp/dashboard.yaml | |
| - name: Check for dashboard manifest drift | |
| run: | | |
| if ! diff -u deploy/dashboard.yaml /tmp/dashboard.yaml; then | |
| echo "❌ deploy/dashboard.yaml is out of date." | |
| echo "Run 'make generate-deploy-manifests' and commit the result." | |
| exit 1 | |
| fi | |
| provider-go-checks: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| provider: [dynamo, kaito, kuberay, llmd] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Setup Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version: "1.25" | |
| cache-dependency-path: providers/${{ matrix.provider }}/go.sum | |
| # `providers/dynamo/Makefile`'s `build` target depends on | |
| # `verify-versions`, which regenerates `shared/types/versions.generated.ts` | |
| # via bun. Install bun on every matrix job (the other three providers | |
| # don't need it but skipping conditionally would be more brittle than | |
| # the ~3s install). | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version: latest | |
| - name: make build | |
| run: make -C providers/${{ matrix.provider }} build | |
| - name: make test | |
| run: make -C providers/${{ matrix.provider }} test | |
| controller-unit-tests: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Setup Go | |
| uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 | |
| with: | |
| go-version: "1.25" | |
| cache-dependency-path: controller/go.sum | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version: latest | |
| - name: Run controller unit tests | |
| run: | | |
| cd controller | |
| make test | |
| echo "## 🎯 Controller Test Coverage" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| go tool cover -func=cover.out | tail -1 >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| - name: Test verify-versions guard | |
| run: make test-verify-versions | |
| - name: Build controller and assert ldflags injection | |
| # `make controller-build` delegates to controller/Makefile, which | |
| # injects -X .../gateway.DefaultGAIEVersion=$(GAIE_VERSION) via | |
| # ldflags. Read it back from the binary build info to confirm | |
| # the injection actually landed (commit 83c53f8). | |
| run: | | |
| set -euo pipefail | |
| source versions.env | |
| make controller-build | |
| if ! go version -m controller/bin/manager \ | |
| | grep -F -- "-X github.com/kaito-project/airunway/controller/internal/gateway.DefaultGAIEVersion=${GAIE_VERSION}"; then | |
| echo "❌ ldflags injection of DefaultGAIEVersion=${GAIE_VERSION} did not land in controller/bin/manager" | |
| exit 1 | |
| fi | |
| echo "✅ ldflags injection landed: DefaultGAIEVersion=${GAIE_VERSION}" | |
| - name: Build dynamo provider and assert ldflags injection | |
| # Mirrors the controller assertion above. providers/dynamo/Makefile | |
| # injects -X .../providers/dynamo.DynamoVersion=$(DYNAMO_VERSION). | |
| # Note the binary is bin/provider, not bin/manager. | |
| run: | | |
| set -euo pipefail | |
| source versions.env | |
| cd providers/dynamo && make build && cd - | |
| if ! go version -m providers/dynamo/bin/provider \ | |
| | grep -F -- "-X github.com/kaito-project/airunway/providers/dynamo.DynamoVersion=${DYNAMO_VERSION}"; then | |
| echo "❌ ldflags injection of DynamoVersion=${DYNAMO_VERSION} did not land in providers/dynamo/bin/provider" | |
| exit 1 | |
| fi | |
| echo "✅ ldflags injection landed: DynamoVersion=${DYNAMO_VERSION}" |