mirror of
https://github.com/azaion/satellite-provider.git
synced 2026-06-27 07:21:14 +00:00
80ef5608f1
Co-authored-by: Cursor <cursoragent@cursor.com>
3.0 KiB
3.0 KiB
CI/CD Pipeline
Platform
CI Server: Woodpecker CI (self-hosted) — see suite _infra/ci/README.md for agent install and registry wiring.
| Agent pool | Woodpecker label | Host | Role for this repo |
|---|---|---|---|
| ARM64 | platform: arm64 |
Colocated with CI server (Jetson) | Unit tests (01-test); builds {branch}-arm images |
| AMD64 | platform: amd64 |
Separate remote host | Builds {branch}-amd64 images consumed by production deploy |
Developer machine: Apple Silicon Mac (M1/M2/M3, darwin/arm64). Local Docker runs native linux/arm64 — see tests/environment.md § Platform.
Pipeline Stages
flowchart LR
Push[Push/PR to dev/stage/main] --> Test[01-test arm64]
Test --> BuildArm[02-build-push arm64]
Test --> BuildAmd[02-build-push amd64]
BuildArm --> RegistryArm["registry … :branch-arm"]
BuildAmd --> RegistryAmd["registry … :branch-amd64"]
01-test (Unit Tests)
| Property | Value |
|---|---|
| Trigger | push, pull_request, manual |
| Branches | dev, stage, main |
| Agent | platform: arm64 only (unit tests are arch-neutral; suite convention) |
| Image | mcr.microsoft.com/dotnet/sdk:10.0 |
| Steps | dotnet restore → dotnet test (Release config) |
| Output | TRX test results |
Integration and perf suites are not run in CI — they run locally via scripts/run-tests.sh and scripts/run-performance-tests.sh (Docker Compose).
02-build-push (Docker Build & Push)
| Property | Value |
|---|---|
| Trigger | push, manual |
| Branches | dev, stage, main |
| Depends on | 01-test (must pass) |
| Agent | matrix: fans out to arm64 and amd64 |
| Image | docker (DinD via socket mount) |
| Dockerfile | SatelliteProvider.Api/Dockerfile (same file for both arches — multi-arch base images) |
| Tag format | {branch}-arm (arm64 agent), {branch}-amd64 (amd64 agent) |
| Registry | Gitea OCI via Caddy TLS (registry_host, registry_user, registry_token secrets) |
Multi-Architecture Strategy
Follows the suite Woodpecker contract (matrix: + labels: platform: ${PLATFORM}):
| Matrix entry | Agent | Registry tag | Deploy consumer |
|---|---|---|---|
PLATFORM: arm64, TAG_SUFFIX: arm |
Colocated Jetson agent | e.g. dev-arm |
Not used by current deploy profiles |
PLATFORM: amd64, TAG_SUFFIX: amd64 |
Remote amd64 agent | e.g. dev-amd64 |
suite/_infra/deploy/satellite-provider/ — Watchtower tracks ${BRANCH}-amd64 |
Production deploy is amd64-only (dedicated satellite-provider host). The arm64 build validates that the Dockerfile and gRPC proto codegen path work on the colocated agent.
Secrets
| Secret | Purpose |
|---|---|
| registry_host | Container registry URL (Gitea + Caddy, host:port) |
| registry_user | Registry username (azaion) |
| registry_token | Gitea ci-push PAT (write:package) |