Skip to Content
Other organizationsRepository requirements

Repository requirements

Frontend modules

RequirementDetails
Package managerYarn Berry (2 or later), with the Yarn release committed and referenced by yarnPath. 4.10.3 or later for trusted publishing
LayoutOne Yarn project at the repository root; a single package or a workspaces monorepo
Lockfileyarn.lock up to date: installs run with --immutable
VersionRoot package.json version, or a ci:current-version script
Build outputdist/ per package, unless you set artifact_path
Node.jsengines.node in package.json; otherwise Node.js 22

Yarn 1, npm and pnpm projects, and projects in a subdirectory, are not supported.

Script contract

The workflows run these root package.json scripts when they exist and infer a default otherwise. Any of them can also be replaced with a workflow input.

ScriptUsed forDefault when absent
buildBuild (when there is no turbo.json)yarn turbo run build with turbo.json
verifyLint, type checks and testsRequired
ci:version <version>Set the version; receives an exact version or patch / minor / majoryarn version, across all workspaces in a monorepo
ci:current-versionPrint the current versionRoot package.json version
ci:prepublishPublish a pre-release to nextyarn npm publish --tag next per package
ci:publishPublish a releaseyarn npm publish per package

The scripts make other monorepo tools (lerna, nx and so on) work without the workflows knowing about them. For example, a lerna repository might define:

package.json
{ "scripts": { "ci:version": "lerna version --no-git-tag-version --no-push --yes", "ci:current-version": "node -p \"require('./lerna.json').version\"", "ci:prepublish": "lerna publish from-package --dist-tag next --yes", "ci:publish": "lerna publish from-package --yes" } }

The default publish commands record each package as it is published, which lets a failed release tell exactly what went out. With your own ci:publish, the workflow asks the registry instead. Pass --tolerate-republish (or your tool’s equivalent) so a retried publish skips packages that already went out.

Backend modules

RequirementDetails
BuildMaven, with a pom.xml at the repository root
Java versionInferred from the OpenMRS platform dependency (2.0 and later) and the compiler settings; set java_versions for older platforms or to narrow the matrix
Deploy targets<distributionManagement> in the POM, or the repository URL inputs
ReleasesAn <scm><developerConnection> or <connection>; the release pushes to the repository running it, whatever URL it names
SNAPSHOT branchesmain, master, the default branch, and N.x / N.N.x maintenance branches whose version matches; set deploy_branch for others
Last updated on