65 lines
2.0 KiB
YAML
65 lines
2.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
agent:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: rustfmt, clippy
|
|
- run: cargo fmt --manifest-path agent/Cargo.toml --check
|
|
- run: cargo clippy --manifest-path agent/Cargo.toml --all-targets -- -D warnings
|
|
- run: cargo test --manifest-path agent/Cargo.toml --locked
|
|
- run: cargo build --manifest-path agent/Cargo.toml --release --locked
|
|
|
|
backend:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: control-plane/backend
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.24.x'
|
|
cache-dependency-path: control-plane/backend/go.sum
|
|
- run: test -z "$(gofmt -l .)"
|
|
- run: go vet ./...
|
|
- run: go test -race ./...
|
|
|
|
frontend:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: control-plane/frontend
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '22.14'
|
|
cache: npm
|
|
cache-dependency-path: control-plane/frontend/package-lock.json
|
|
- run: npm ci
|
|
- run: npm run lint
|
|
- run: npm run typecheck
|
|
- run: npm test -- --run
|
|
- run: npm run build
|
|
- run: npm audit --omit=dev
|
|
|
|
containers:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: mkdir -p control-plane/secrets
|
|
- run: printf 'ci-only-not-a-secret-32-characters\n' | tee control-plane/secrets/db_password control-plane/secrets/admin_password control-plane/secrets/agent_token control-plane/secrets/integration_token control-plane/secrets/grafana_admin_password control-plane/secrets/grafana_secret_key >/dev/null
|
|
- run: docker compose -f control-plane/docker-compose.yml config --quiet
|
|
- run: docker compose -f control-plane/docker-compose.yml --profile observability build backend frontend grafana
|