Add Pulumi preview to CI infra job
CI / Detect changed paths (pull_request) Failing after 0s
CI / Infra unit tests, vet, and preview (pull_request) Has been skipped
CI / Odin unit tests and build (pull_request) Has been skipped
CI / API unit tests and lint (pull_request) Has been skipped

Infra now always runs unit tests + vet on PRs, and additionally runs
`pulumi preview --diff` (posted as a PR comment) when the infra, gui, or
api code changes — since any of those can change what gets deployed.
This commit was merged in pull request #2.
This commit is contained in:
2026-08-31 14:03:26 -06:00
parent bd8a7da379
commit 920fcd6a1a
2 changed files with 92 additions and 3 deletions
+1 -1
View File
@@ -18,7 +18,7 @@ The root `Makefile` is a lean delegator: base commands (`run`, `build`, `test`,
- `api/` — Rust + axum backend API that will serve DESI catalog data. `src/lib.rs` exposes `routes`/`models`/`config`; `src/main.rs` is the server entrypoint (binds `API_BIND_ADDR`, default `0.0.0.0:8080`). Crate name is `desi-explorer-api` (lib `desi_explorer_api`); Rust version pinned in `api/rust-toolchain.toml`. `api/Makefile` owns the Rust targets.
- `infra/` — Go + Pulumi (`runtime: go`) targeting the on-prem k3s cluster via the default kubeconfig, mirroring the `homelab` repo's pattern. Module name is `desi-explorer-infra`. `infra/Makefile` owns the Pulumi/Go targets.
- `scripts/` — repo-level build helpers (Odin toolchain install).
- `.gitea/workflows/``ci.yml` (PR: install Odin, Rust, `odin test` + build, `cargo test` + clippy, `go test`) and `release.yml` (tag `v*`: build native + WASM + publish a Gitea release).
- `.gitea/workflows/``ci.yml` (PR: `odin test` + build, `cargo test` + clippy, `go test` + vet; infra always runs tests/vet and posts a `pulumi preview --diff` as a PR comment when infra/gui/api changed) and `release.yml` (tag `v*`: build native + WASM + publish a Gitea release).
## Conventions
- Odin code lives in `gui/src/`; external deps go in `gui/lib/` and are wired via `-collection:lib=lib/local` (or a git submodule imported by relative path).