Repository navigation
Conversation
The release is now created only after build, tests and coverage passed, as a draft that a maintainer reviews and publishes. Publishing the draft triggers the tagged docs deployment, which a release created with GITHUB_TOKEN never did. Dependency PRs are grouped in the notes. Signed-off-by: Uwe Maucher <205777204+umaucher@users.noreply.github.com>
A glob that matches a single artifact is extracted without its own directory, so the verification report was split into one zip per top-level folder. Downloading by name keeps it as one asset. Signed-off-by: Uwe Maucher <205777204+umaucher@users.noreply.github.com>
Dry runs stay possible from any branch so the workflow can be tested before it is merged, but a tag must never be created from a PR branch. Signed-off-by: Uwe Maucher <205777204+umaucher@users.noreply.github.com>
License Check Results🚀 The license check job ran with the Bazel command: bazel run --lockfile_mode=error //:license-checkStatus: Click to expand output |
There was a problem hiding this comment.
🟡 Changes recommended
The default-branch restriction accepts same-named tags, and asset collection fails with multiple Bazel targets.
2 open issues
What changed in this PR
Reworks release automation to verify commits before creating a draft release for maintainer publication, enabling the existing tagged-documentation deployment flow.
Changes:
- Gates release creation on build, test, coverage, and component integration verification.
- Adds a reusable release core for tagging, asset packaging, checksums, and dry runs.
- Adds a release-note template and dependency-update grouping.
| File | Description |
|---|---|
.github/workflows/release.yml |
Coordinates verification and calls the reusable release workflow. |
.github/workflows/release_core.yml |
Validates release inputs and assembles tags, drafts, and assets. |
.github/release.yml |
Groups dependency updates in generated release notes. |
.github/RELEASE_TEMPLATE.md |
Adds release metadata and documentation links to release notes. |
Review effort: Balanced
| set -euo pipefail | ||
|
|
||
| # Dry runs may use any branch, e.g. to test this workflow before it is merged. | ||
| if [[ "$DRY_RUN" != "true" && "$REF_NAME" != "$DEFAULT_BRANCH" ]]; then |
| bazel build "${flags[@]}" "${targets[@]}" | ||
|
|
||
| mkdir -p dist | ||
| bazel cquery "${flags[@]}" --output=files "${targets[@]}" | while read -r file; do |
|
Documentation preview for this pull request is available at: |
Trying the workflow from the command lineNeeds Dry run (works from this branch)gh workflow run release.yml --repo eclipse-score/persistency \
--ref um_release_workflow_draft -f tag=v9.9.9-test1 -f dry_run=true
RUN=$(gh run list --repo eclipse-score/persistency --workflow release.yml --limit 1 --json databaseId --jq '.[0].databaseId')
gh run watch "$RUN" --repo eclipse-score/persistency --exit-status
gh run download "$RUN" --repo eclipse-score/persistency --name release-assets-v9.9.9-test1 --dir /tmp/release-assetsExpected (same as on a fork): all jobs green, no tag, no release. The workflow artifact Real run (only after merge, from
|
| What | Created by | Undo |
|---|---|---|
| Dry run | nothing in the repo, only a workflow artifact (30 days) | gh run delete <run-id> --repo eclipse-score/persistency (optional) |
| Draft release and tag | real run | gh release delete v0.4.0 --repo eclipse-score/persistency --cleanup-tag --yes |
| Published release | publishing the draft | same command as above |
| Tagged docs | Docs Publish after publishing |
delete the v0.4.0/ folder and its entry in versions.json on the gh-pages branch |
The workflow never commits to main and creates no branches. If a real run fails after the tag was created but before the release, remove the leftover tag with git push origin --delete v0.4.0.
Tried on a fork with v9.9.9-test1: dry run, real run, publish and tagged docs all worked.
Signed-off-by: Uwe Maucher <205777204+umaucher@users.noreply.github.com>


Replaces the release workflow: verification first, then a draft release (annotated tag, coverage/test report, docs zip, SBOM, checksums) that a maintainer publishes. Publishing fires
release: published, which deploys the tagged docs; a release created withGITHUB_TOKENnever did.release.yml: dispatch entry point with the verification jobs.release_core.yml: reusable core without persistency specifics (candidate for cicd-workflows)..github/release.yml: groupsdependencies/renovatePRs in the generated notes..github/RELEASE_TEMPLATE.md: header prepended to the generated notes.Tried end to end on a fork (dry run, draft, publish, tagged docs). Real releases are refused on non-default branches; use
dry_run=trueto try it from this branch.