Skip to content

ci: the build workflow counts as build; a no-release label skips the version (#239) - #241

Merged
compot-dev merged 2 commits into
v2from
version-check-workflow
Oct 18, 2026
Merged

compot-dev merged 2 commits into
v2from
version-check-workflow

Conversation

@compot-dev

Copy link
Copy Markdown
Collaborator

Closes #239.

  • .github/check-version.sh counts .github/workflows/build.yml as build along with android/: the workflow holds build steps (JDK, Gradle tasks, signing, packaging), and the script cannot tell them from test or publication steps. Markdown files under android/ no longer count.
  • NO_RELEASE=true, set by the pull request's no-release label, lets a change to the app or the build through without a new version, for changes that leave the APKs as they are (as in ci: a no-release label lets a change that keeps the binaries skip the version; review follow-ups cerberus#39). The workflow now also runs on labeled / unlabeled, so adding or removing the label re-runs the check.
  • .github/publish-latest.sh stays out: it publishes, it does not build.

This pull request itself carries no-release: it changes build.yml but not the APKs.

Checked locally (temporary clone, the script against its base):

  • app change without a new version: fails; the same with NO_RELEASE=true: passes
  • build.yml-only change: fails; with NO_RELEASE=true: passes
  • publish-latest.sh, README, android/*.md, unit tests only: pass
  • app change with 2.17 → 2.17.1 and its CHANGELOG section: passes
  • shellcheck v0.10.0 (style) clean; the workflow parses.

@compot-dev compot-dev added uni Release naming and management, common across the repositories no-release Changes the build or the code without changing the binaries: no new version, no release labels Oct 18, 2026
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Require version bumps for build workflow changes with a no-release exception

✨ Enhancement ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Treat build workflow changes as release-relevant, while excluding Android Markdown files.
• Allow the no-release label to waive a version bump when APKs remain unchanged.
• Re-run the version check when the label is added or removed.
Diagram

graph TD
  Events["PR events"] --> Check["Version check"] --> Version{"Version changed?"} -- "Yes" --> Validate["Validate release"] --> Pass["Check passes"]
  Version -- "No" --> Scope{"Relevant changes?"} -- "Yes" --> Label{"No-release label?"} -- "Yes" --> Pass
  Scope -- "No" --> Pass
  Label -- "No" --> Fail["Check fails"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Separate build and non-build workflows
  • ➕ Could distinguish build changes from test or publication changes without a label.
  • ➖ Requires restructuring a workflow that shares build, test, and publication configuration; increases CI maintenance.

Recommendation: Keep the conservative build.yml check and explicit no-release waiver. Splitting the workflow would make exemptions more automatic, but is disproportionate to this policy change.

Files changed (2) +27 / -8

Enhancement (1) +19 / -6
check-version.shExpand version-check scope and support no-release +19/-6

Expand version-check scope and support no-release

• Counts build.yml changes as app or build changes, while excluding Android Markdown files alongside unit tests. When the version is unchanged, NO_RELEASE=true permits relevant changes and emits a notice; otherwise the existing bump requirement remains.

.github/check-version.sh

Other (1) +8 / -2
build.ymlPass the no-release label to the version job +8/-2

Pass the no-release label to the version job

• Re-runs the pull-request workflow when labels are added or removed. The version step sets NO_RELEASE from the pull request’s labels so the check can apply the waiver.

.github/workflows/build.yml

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (1) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Labeled changes can alter released builds 📎 Requirement gap ≡ Correctness
Description
NO_RELEASE=true exits successfully whenever changed is nonempty and the version is unchanged,
without checking whether the resulting APKs differ. A no-release label on a source or build change
that changes the released binaries therefore bypasses the required version bump and changelog check.
Code

.github/check-version.sh[R46-50]

+	if [ -n "$changed" ] && [ "${NO_RELEASE:-}" = true ]; then
+		echo "::notice::the app or its build changed, versionName stays $old: the no-release" \
+			"label says the APKs do not change"
+		echo "$changed"
+		exit 0
Evidence
The checklist requires the no-release label to permit binary-neutral changes but forbids it from
bypassing the version requirement for changes that alter released binaries. The changed script
accepts the label whenever any app or build path is changed and the version is unchanged; it
performs no binary-neutrality validation before exiting successfully.

Allow no-release label for binary-neutral changes if adopted
.github/check-version.sh[42-50]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The `no-release` label bypasses the version check for every changed app or build path, including changes that can alter released binaries. This violates the policy that the label is valid only for binary-neutral changes.
## Fix Focus Areas
- .github/check-version.sh[42-50]
- .github/workflows/build.yml[43-48]
## Recommended Fix
Restrict the `no-release` bypass to changes that are provably binary-neutral, such as an explicit allowlist of test, publication, and comment-only changes, or build and compare the resulting artifacts before accepting the label. Ensure source and build changes that may alter released binaries still require a version and changelog entry even when the pull request has the `no-release` label.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Workflow edits hit an undocumented gate ✓ Resolved
Description
docs/testing.md still says CI-only pull requests need no version bump, while check-version.sh
now counts changes to the build workflow as app or build changes. A contributor following that
guidance can submit a workflow-only change with an unchanged version and have the version check fail
unless the pull request receives the new no-release label.
Code

.github/check-version.sh[R42-43]

+changed=$(git diff --name-only "$base"...HEAD -- android .github/workflows/build.yml \
+	':(exclude)android/app/src/test' ':(exclude,glob)**/*.md')
Evidence
The documented exemption for CI-only pull requests conflicts with the newly added build-workflow
path in the check; the unchanged-version branch fails when that path changes without the label.

docs/testing.md[50-50]
.github/check-version.sh[42-55]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The contributor-facing version policy says CI-only changes need no version bump, but the check now gates changes to the build workflow.
## Fix Focus Areas
- docs/testing.md[50-50]
- .github/check-version.sh[42-50]
## Recommended Fix
Update the version-policy guidance to distinguish build.yml from other CI changes and explain when the no-release label permits an unchanged version. Align the Markdown-file exception with the check as well.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can move or hide resolved findings to focus on what still needs action

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread .github/check-version.sh
@compot-dev

Copy link
Copy Markdown
Collaborator Author

/review

Comment thread .github/check-version.sh
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code review by qodo was updated up to the latest commit 70c051d

@compot-dev
compot-dev merged commit 82cd3bd into v2 Oct 18, 2026
8 checks passed
@compot-dev
compot-dev deleted the version-check-workflow branch October 18, 2026 13:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-release Changes the build or the code without changing the binaries: no new version, no release uni Release naming and management, common across the repositories

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Version check: workflow build steps and a no-release label

1 participant