- Go 1.26+
- gomnibus installed:
go install github.com/syntaxroot-cc/gomnibus/cmd/gomnibus@latest - Git submodules initialized:
git submodule update --init
git clone https://github.com/syntaxroot-cc/gomnibus-gitlab
cd gomnibus-gitlab
git submodule update --init
git config core.hooksPath .githooksA pre-commit hook runs gofmt on Go files. Enable it after cloning:
git config core.hooksPath .githooksRun the full validation suite (parses all YAML, checks checksums, resolves deps):
go test ./validate/...Or use gomnibus's built-in validator:
gomnibus validate gitlab- Create
config/software/<name>.yamlfollowing the gomnibus software YAML schema. - Re-run
go test ./validate/...— the suite will catch missing fields, missing checksums, and unresolvable dependencies. - Add the new component to
config/projects/gitlab.yamlunderdependencies:.
- All embedded libraries (not GitLab services) install to
${install_dir}/embedded/by using an explicit--prefix=${install_dir}/embeddedincommand:configure steps. - GitLab services install to
${install_dir}/embedded/service/<name>/. - Go binaries install to
${install_dir}/embedded/bin/. - Use
env:at the top level (not per-step) to setPKG_CONFIG_PATH,LDFLAGS, andCPPFLAGSso dependency libraries are found during configure and link. configure:step auto-prepends--prefix=${install_dir}— usecommand:instead when you need--prefix=${install_dir}/embedded.${install_dir},${src_dir}, and${build_dir}expand in all step arg lists.
To override a component version without modifying the software definition, add an overrides: block to config/projects/gitlab.yaml:
overrides:
- name: postgresql
version: "16.8"All three jobs must pass:
| Job | What it runs |
|---|---|
| Validate | go test -race ./validate/... on Linux/macOS/Windows |
| Lint | golangci-lint v2 + govulncheck (Linux only) |
| Schema check | gomnibus validate gitlab — verifies the project definition is complete |