CI/CD & Releases
The pipeline is defined in .gitlab/ci/model-forge.yml. Model Forge builds like
portal-model / config-adapter: it builds and tests the Maven reactor, then
publishes the Maven artifacts to this project's GitLab registry so
portal-backend can resolve them.
The file was ported from the former standalone model-forge/.gitlab-ci.yml when
Model Forge moved into the mono-repo. The reactor no longer ships an npm types
module. The TypeScript and Zod types are generated in portal-frontend
instead — see Client Libraries.
| Stage | Job | Purpose |
|---|---|---|
| lint | generate-graph-model-forge | Runs mvn dependency:tree to emit maven.graph.json per module for license/dependency scanning. Runs on nightly schedule, tags, main, develop and MRs. |
| lint | validate-schemas-model-forge | Validates the CORE-IR JSON Schemas in model-forge-runtime/src/main/resources/*.schema.json against the JSON Schema metaschema (check-jsonschema). |
| build-package | test-model-forge | cd model-forge && mvn verify — builds and tests the reactor, runs the Spotless format check and SpotBugs static analysis. Needs Docker-in-Docker for the Testcontainers-based tests. Publishes JUnit reports and jar/surefire/jacoco artifacts. |
| deploy-package | publish-model-forge | mvn deploy of the Maven artifacts to this project's GitLab Maven registry (the admin UI sets maven.deploy.skip, so it is not published; tests and quality gates are skipped — already run). |
publish-model-forge runs on main, develop and the nightly schedule only —
never on merge requests — to avoid overwriting the shared snapshot with unmerged
code.
GitLab security templates (SAST, Secret Detection, Dependency Scanning) are
included globally in the repo .gitlab-ci.yml, not in this file. Renovate,
commitlint, GitLab Pages and semantic-release are not part of the Model Forge
pipeline: renovate lives in .gitlab/ci/renovate.yml, commitlint and the release
process are repo-wide concerns, and the docs live in the separate documentation
repo.
Versioning
Model Forge keeps its own fixed version, 0.1.0-SNAPSHOT, taken from its
POMs. It does not use the ${revision} pattern and does not take part in
repo-wide version tags — there is no semantic-release and no tag-triggered
release job. portal-backend consumes core-model-forge-*:0.1.0-SNAPSHOT.
The Maven snapshot is (re)published on every pipeline for main, develop and
the nightly schedule; the npm package is published on the same triggers under the
next dist-tag with a SHA-suffixed snapshot version.