Skip to main content
Version: V2-Next

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.

StageJobPurpose
lintgenerate-graph-model-forgeRuns mvn dependency:tree to emit maven.graph.json per module for license/dependency scanning. Runs on nightly schedule, tags, main, develop and MRs.
lintvalidate-schemas-model-forgeValidates the CORE-IR JSON Schemas in model-forge-runtime/src/main/resources/*.schema.json against the JSON Schema metaschema (check-jsonschema).
build-packagetest-model-forgecd 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-packagepublish-model-forgemvn 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.