- Go 1.25 (
go.modpins the toolchain) git;mercurialandsubversionfor the full test suite
git clone https://github.com/Open-MBEE/SysPI.git
cd SysPI
go build ./...
go test ./...The repository follows git-flow:
developis the integration branch and the default branch. Everyfeat/,fix/,docs/,ci/andtest/branch is cut fromdevelop, and its pull request targetsdevelop.mainis the release branch; release tags (v*) are created there.
- Create a branch from
develop:git checkout -b feat/my-change origin/develop. - Make focused changes with Conventional Commit messages (
<type>(<scope>): <description>; typesfeat,fix,docs,test,refactor,chore). - Add a changelog fragment:
changes/unreleased/<slug>.<section>.mdwith the list item(s) only (seechanges/README.md). Do not editCHANGELOG.md. - Run the gate:
go build ./... && go vet ./... && test -z "$(gofmt -l .)" && SYSPI_REQUIRE_VCS=1 go test ./.... - Open a draft pull request against
develop; mark it ready for review once CI is green. - Respond to review; a maintainer merges.
- Include tests for new behaviour; the end-to-end suite in
tests/e2eis the acceptance gate. - Update
README.md/docs/when a format, command or contract changes. - Keep pull requests to one feature or fix.
- Never rebase or force-push a branch that has a pull request; merge
developinto it instead.
A maintainer tags vX.Y.Z on main; the release workflow builds Linux, macOS and Windows
binaries for amd64 and arm64 with a SHA256SUMS file and attaches them to the GitHub release.
The .project.json convention for packages applies to SysPI's own releases: the tag equals the
version.
By contributing you agree that your contributions are licensed under the Apache License 2.0.