Skip to content

fix(ci): release plugins from explicit versions and labelled merges - #63

Merged
vlazzarini merged 1 commit into
csound:developfrom
hlolli:fix/native-release-workflow
Oct 29, 2026
Merged

vlazzarini merged 1 commit into
csound:developfrom
hlolli:fix/native-release-workflow

Conversation

@hlolli

@hlolli hlolli commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

The native workflow currently derives its next version from old 1.0.x tags and can publish on a manual run. Use package.json as the version source for native tags, asset names, and npm, starting at 7.0.0. Check that both lockfile version fields match.

Publish only when a push matches the exact merge commit of a release-labelled PR into the same repository and branch. Releases from main require a stable version; releases from develop require a prerelease version. PR builds, manual runs, and unlabelled pushes still build and test.

  • Tag the exact merge commit after every native build passes.
  • Reject an existing tag that points elsewhere, while allowing retries for the same commit.
  • Keep new pushes from cancelling release builds and serialize publication of the same version.
  • Replace the old label-check action with a tested script and document version changes and release retries. npm publication stays manual.

Validation: all 16 release-rule tests pass, actionlint passes with ShellCheck enabled, and a read-only check against the latest merged PR returns release=false as expected. GitHub Actions passed the release-rule job, all four native builds, and the WASM package build and tests. The publish job was skipped as expected for this PR.

Refs #62.

@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between be89f51 and 57a62fa.

Files ignored due to path filters: 1
  • package-lock.json is excluded by !**/package-lock.json
Files selected for processing: 7
  • .github/actions/check-pr-label/action.yml
  • .github/scripts/release.py
  • .github/scripts/test_release.py
  • .github/workflows/plugins_build.yml
  • README.md
  • package.json
  • wasm/README.md
Files with no reviewable changes: 1
  • .github/actions/check-pr-label/action.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The change adds release validation and eligibility rules, connects those rules to the build workflow, and updates release instructions. The workflow publishes releases only when the script marks a push as eligible. The package version changes from 7.0.0-beta.1 to 7.0.0.

Changes: Release automation

Layer / File(s) Summary
Version validation and release rules
.github/scripts/release.py, .github/scripts/test_release.py, .github/actions/check-pr-label/action.yml, package.json
The new script validates package and lockfile versions, checks release eligibility against merged pull request metadata, and checks version tags. Tests cover these rules and command behavior. The previous label-check action is removed, and the package version changes to 7.0.0.
Workflow publication and release instructions
.github/workflows/plugins_build.yml, README.md, wasm/README.md
The workflow uses script outputs to gate release publication, checks tags, and creates releases at the triggering commit. The README files document version selection and release steps. Linux and macOS configuration steps group their environment writes.

Priority: Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant Workflow as plugins_build.yml
  participant Script as .github/scripts/release.py
  participant API as GitHub API
  participant Git as Git tag
  participant Release as GitHub release
  Workflow->>Script: validate version and release metadata
  Script->>API: query merged pull requests
  API-->>Script: return pull request metadata
  Script-->>Workflow: return version, release, and prerelease outputs
  Workflow->>Script: check version tag
  Script->>Git: inspect tag target
  Workflow->>Release: create release at triggering commit
Loading

Possibly related issues

  • csound/plugins#62: This change implements release tagging and release eligibility for merges of release-labelled pull requests to main.

Suggested reviewers: vlazzarini

Merge Risk: Minimal · up to 57a62

The release workflow appears ready to merge after normal checks; no actionable release-blocking issue was identified.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly summarizes the main change: release plugins using explicit versions and labelled merges.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 14 functions across 2 files. (4 skipped: 4 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hlolli hlolli mentioned this pull request Oct 29, 2026
@vlazzarini
vlazzarini merged commit 24e99a2 into csound:develop Oct 29, 2026
8 checks passed
@hlolli
hlolli deleted the fix/native-release-workflow branch October 29, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants