Skip to content

ci: align local container verification with CI - #30

Merged
ntwrknrd merged 5 commits into
mainfrom
docs/macos-linux-environment
Oct 11, 2026
Merged

ntwrknrd merged 5 commits into
mainfrom
docs/macos-linux-environment

Conversation

@ntwrknrd

@ntwrknrd ntwrknrd commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Local container checks could pass while CI rejected formatting, dependency drift, or lint. Use one repository-owned Linux image and shared Make targets for local verification, Linux CI, and the tagged-release verification gate.

Pin the compiler in .go-version (Go 1.25.14, matching the current CI patch level) and the linter in Makefile. Keep the module minimum separate. The image supplies an unprivileged user, private runtime directory, and the matching linter schema for offline configuration validation. Docker, Podman, and nerdctl clients can run the same target.

make verify checks dependencies and formatting without repairs, runs vet/tests, builds both binaries, checks feature output, runs configuration validation and lint, and cross-compiles all four release platforms. Native macOS CI runs the shared core make check target. Remove duplicate PR build/lint jobs; release compilation uses make build while preserving embedded Git metadata. Demo compilation uses the same compiler pin.

Validation:

  • Full local container verification passed on Go 1.25.14, including all tests, zero lint issues, and eight cross-built executables.
  • Formatting and dependency drift were rejected without modifying inputs; offline schema validation rejected an invalid setting.
  • A release-style build retained version, commit, and date metadata.
  • Edited workflows passed actionlint; Compose compiler arguments, Markdown, and diff checks passed.
  • GitHub Linux verification, native macOS tests, and demo generation all passed on f6462e9.

Local Linux success predicts the shared Linux checks. Native macOS behavior, demo generation, and release publication retain independent CI coverage. Alternate container clients were checked by dry-run; Docker was used for execution.

Replace OrbStack-specific build and test guidance with Linux environments provided by installed tooling. Preserve Linux-resident storage and document unprivileged execution with a private XDG_RUNTIME_DIR for container test compatibility.
Provide Go, Git, Make, OpenSSH, non-root execution, and a private runtime directory in a repository-owned image. Copy the checkout onto Linux storage and match CI CGO settings. Add make container-test with a selectable Docker-compatible client so agents do not reconstruct test setup for each run.
Run the same Linux verification image locally, in CI, and before tagged releases. Pin the current Go patch version separately from the module minimum. Add read-only drift checks, matching offline linter configuration validation, feature checks, and cross-compilation. Retain native macOS coverage and preserve release Git metadata.
@ntwrknrd
ntwrknrd marked this pull request as ready for review October 11, 2026 17:26
@ntwrknrd
ntwrknrd merged commit 302117a into main Oct 11, 2026
3 checks passed
@ntwrknrd
ntwrknrd deleted the docs/macos-linux-environment branch October 11, 2026 17:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant