Files
satellite-provider/_docs/02_document/deployment/ci_cd_pipeline.md
T
Oleksandr Bezdieniezhnykh 80ef5608f1 chore: WIP pre-implement cycle 14 baseline
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-26 16:13:37 +03:00

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 restoredotnet 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)