Files
agentic-dev/.github/workflows/release-please.yml
Danijel Martinek 8224247009 build(release): track single root product version in release-please
Veect is a hosted SaaS deploying continuously (ADR-027), so release-please
now tracks only the root package with plain v* tags. Drops the five
packages/* entries ahead of story 03's feature deletions so ADR-021's
commit -> release automation keeps working through them.

include-component-in-tag is set to false rather than removed: the
upstream default is true and the node strategy derives a component from
package.json, so literal key removal would keep component-prefixed tags
(template-vertical-v*) instead of the wanted plain v* tags.

Pre-1.0 bump policy (bump-patch-for-minor-pre-major) and changelog
sections are retained. The release workflow's SBOM steps already use the
tag-format-agnostic tag_name output; only its header comment needed
updating. Per-feature CHANGELOG.md files stay on disk untracked by
release-please until story 03 deletes them with their packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
2026-07-12 15:04:23 +02:00

84 lines
3.0 KiB
YAML

# Release Please — automated changelog + version bumps on merge to main.
#
# How it works:
# 1. On every push to main, release-please scans conventional commits since
# the last release tag.
# 2. It opens (or updates) a single rolling "release PR" containing:
# - the root package.json version bump
# - new CHANGELOG.md entries grouped by section (Features / Bug Fixes
# / Performance / Refactoring / Documentation / Reverts)
# - updated .release-please-manifest.json
# 3. Merging that PR triggers tag creation (`vN.N.N`) and GitHub release
# notes.
#
# Single product version (ADR-027 supersedes ADR-021's hybrid scheme): Veect
# is a hosted SaaS deploying continuously, so only the root package is
# tracked and tags are plain `v*` (`include-component-in-tag: false`).
#
# Tracked package, manifest baseline, and changelog sections live in
# `release-please-config.json` + `.release-please-manifest.json`.
name: Release Please
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
# A second push to main while a release PR is open shouldn't fight with the
# first invocation — release-please-action already updates the rolling PR
# idempotently, but concurrency keeps the audit trail clean.
concurrency:
group: release-please
cancel-in-progress: false
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
config-file: release-please-config.json
manifest-file: .release-please-manifest.json
token: ${{ secrets.GITHUB_TOKEN }}
# The steps below run only when release-please actually cut a release.
# pnpm dlx avoids adding @cyclonedx/cyclonedx-npm to the lockfile (CI-only
# tool per ADR-022); SHA-pinned action follows ADR-023 §1 Renovate pattern.
- uses: actions/checkout@v4
if: ${{ steps.release.outputs.releases_created == 'true' }}
- uses: pnpm/action-setup@v4
if: ${{ steps.release.outputs.releases_created == 'true' }}
with:
version: 9
- uses: actions/setup-node@v4
if: ${{ steps.release.outputs.releases_created == 'true' }}
with:
node-version: 22
cache: pnpm
- name: Install dependencies
if: ${{ steps.release.outputs.releases_created == 'true' }}
run: pnpm install --frozen-lockfile
- name: Generate CycloneDX SBOM
if: ${{ steps.release.outputs.releases_created == 'true' }}
run: >
pnpm dlx @cyclonedx/cyclonedx-npm
--output-file sbom-${{ steps.release.outputs.tag_name }}.cdx.json
--output-format json
--ignore-npm-errors
- name: Attach SBOM to GitHub release
if: ${{ steps.release.outputs.releases_created == 'true' }}
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3.0.0
with:
tag_name: ${{ steps.release.outputs.tag_name }}
files: sbom-${{ steps.release.outputs.tag_name }}.cdx.json