Files
Robin Goetz 9000456836 ci: adopt semantic-release for versioned v1 releases (#1535)
* ci: adopt semantic-release for versioned v1 releases

Replace the nightly alpha-increment cron with semantic-release driving semver
for @spartan-ng/brain, cli and mcp across main/beta/alpha channels, with GitHub
Releases, npm trusted publishing, and a verify-gated workflow. Make
@spartan-ng/helm private, fix package metadata for a public v1, and remove the
now-dead auto-increment generator and nightly scripts.

* ci: block release-triggering commit types for non-published changes

semantic-release computes the version from commit types across the whole
branch and never inspects which files changed, so a feat/fix touching only
apps/app (the docs app) or tooling would still bump and publish
brain/cli/mcp.

Extend the commit-msg hook to reject feat/fix/perf/refactor/revert and
breaking changes when no published lib (libs/brain|cli|helm|mcp|registry)
is touched, pointing the author at docs/chore/etc instead.

* ci: harden release workflow and drop no-op release asset

- release.yml: add a top-level read-only token default so the verify job
  runs with least privilege; the release job keeps its explicit write
  scopes.
- release.config.mjs: drop libs/helm/package.json from the git assets list.
  helm is private and pinned at 0.0.0 and no release generator writes it,
  so committing it was always a no-op.
- commit-msg: note that the release-triggering type list mirrors
  release.config.mjs so the two stay in sync.

* docs: mark the release GitHub App as required in v1 checklist

release.yml always mints its token via create-github-app-token, so the App
is required for any release, not just when branch protection is enabled.

* chore(repo): collapse the three release-version generators into one

replace-ui-version, replace-cli-version and replace-mcp-version all did the
same thing in the current tree: set their own package.json version from
--newVersion / $VERSION. replace-ui-version also carried two paths that are
now dead — bumping brain's @spartan-ng peerDeps (brain has none) and stamping
a SPARTAN_VERSION constant into the CLI's versions.ts (that constant does not
exist; the CLI reads the installed version via getInstalledPackageVersion).

Replace all three with one set-release-version generator that stamps the
version into brain/cli/mcp in lockstep, covered by unit tests. Drop the
now-static versions.ts from the semantic-release git assets.
2026-06-24 00:16:03 +02:00

36 lines
822 B
JSON

{
"name": "helm",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/helm/src",
"prefix": "hlm",
"projectType": "library",
"tags": ["scope:helm"],
"targets": {
"build": {
"executor": "@nx/angular:package",
"outputs": ["{workspaceRoot}/dist/{projectRoot}"],
"options": {
"project": "libs/helm/ng-package.json",
"tsConfig": "libs/helm/tsconfig.lib.json"
},
"configurations": {
"production": {
"tsConfig": "libs/helm/tsconfig.lib.prod.json"
},
"development": {}
},
"defaultConfiguration": "production"
},
"test": {
"executor": "@nx/vitest:test",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"configFile": "libs/helm/vite.config.mts"
}
},
"lint": {
"executor": "@nx/eslint:lint"
}
}
}