Skip to content

fix(ui): distinguish AI Runway integration from runtime install status #1063

fix(ui): distinguish AI Runway integration from runtime install status

fix(ui): distinguish AI Runway integration from runtime install status #1063

Workflow file for this run

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}"