GitHub Hosted CI
The repository now runs on GitHub Hosted Runner and no longer depends on repository-private self-hosted runners.
Current Runtime Environment
- Runner:
ubuntu-latestby default; per-job pins exist — the iOS Swift job pinsubuntu-24.04and the iOS macOS job pinsmacos-15 - Workflow:
.github/workflows/ci.yml - Triggers:
- push to
main - pull requests against
main - manual
workflow_dispatch
- push to
Current CI Checks
Go checks
gofmtformat verificationgo mod tidydrift checkgo vet- Lint (
golangci-lint, baseline zero, repo-root scope) - Unit tests and coverage gate
- Race detector (
go test -race) - AI golden set (mock,
make test-golden) - Codecov coverage upload
- Standard binary build
- WeKnora compatibility tag build
Module checks
internal/modules/...build and testsinternal/platform/...build and testsinternal/handlers/...build and testscmd/serverentrypoint build
SDK checks
sdkdependency install- SDK lint
- SDK test
- SDK build
- Workspace drift check after syncing the SDK into the demo
Docs checks
- swag regeneration and generated-artifact consistency verification
- VitePress documentation site build
Script checks
- Syntax and allowlist verification of scripts under
scripts/(including tests)
Smoke checks
- Service smoke boot and basic endpoint checks
Android probe
- Android SDK build (AAR artifact:
servify-sdk-aar)
iOS checks
ios-swift: Swift source test jobios-macos: macOS Darwin face verification, producing theservify-kit-xcframeworkartifact and passing the size gate (check-ios-sdk-size.sh)
Admin checks
apps/adminbuild and checks
AI Golden Set (real LLM)
- Job named
golden-real, runs only on a manualworkflow_dispatch(it needs real LLM credentials, so push/PR pipelines skip it)
Integration
- Brings up the integration environment with
docker composeusing the base + weknora compatibility mock double overlay (docker-compose.yml+docker-compose.weknora.yml; the Dify service is not included) - Health-check polling
- Runs
scripts/test-weknora-integration.sh - Migration watermark reconciliation: reads the head version of the migration chain dynamically to verify
schema_migrations(not hard-coded) - Backup & restore drill: pg_dump/pg_restore rehearsal
- Dumps compose logs on failure
CI itself has no deployment job; the release surface is the manual release.yml (workflow_dispatch triggered).
Design Trade-offs
- No extra runner hosts to maintain, which reduces operations cost
- CI fails explicitly instead of masking problems through error-swallowing logic in
make test - Go, SDK and integration are split into separate jobs, which makes failures easier to localize
- CI only checks and verifies, it does not deploy; release goes through the manual release workflow
Checks That Could Be Added Next
- Minimal Mermaid render smoke check
- OpenAPI/contract drift check
- Finer-grained integration matrix