-
Notifications
You must be signed in to change notification settings - Fork 125
Description
Summary
Two related bugs in the stable release pipeline prevent release-please from running on pushes to main.
Bug 1: GitHub Actions needs-cascade skips release-please
Since commit f89f0eb6 (March 13 — "feat(workflows): add Python linting CI workflow with Ruff (#951)"), every push to main skips the release-please job due to GitHub Actions' needs-cascade behavior.
Root cause: The release-please job depends on all 9 CI jobs via needs:. Two of those — python-lint and pytest — are conditional on discover-python-projects.outputs.has-projects == 'true'. When discovery outputs false, both jobs are skipped. GitHub Actions then skips any downstream job whose needs: includes a skipped dependency, unless that job has an if: expression that overrides the default behavior.
Fix: Add if: ${{ !cancelled() && !failure() }} to the release-please job so it runs when dependencies succeeded or were skipped, while still blocking on actual failures or cancellations.
Bug 2: Python discovery fails to find projects under hidden directories
The discover-python-projects job in both release-stable.yml and pr-validation.yml uses Get-ChildItem -Recurse -Filter pyproject.toml to find Python projects. PowerShell's Get-ChildItem -Recurse does not traverse hidden directories (those prefixed with . such as .github/) by default.
The only pyproject.toml in the repository is at .github/skills/experimental/powerpoint/pyproject.toml — under the hidden .github/ directory, so the discovery script always outputs has-projects=false.
Fix: Add -Force to the Get-ChildItem call so PowerShell traverses hidden directories.
Reproduction (local PowerShell):
# Without -Force: finds nothing
Get-ChildItem -Recurse -Filter pyproject.toml |
Where-Object { $_.FullName -notmatch 'node_modules' }
# Count: 0
# With -Force: finds the project
Get-ChildItem -Recurse -Force -Filter pyproject.toml |
Where-Object { $_.FullName -notmatch 'node_modules' }
# .github/skills/experimental/powerpoint/pyproject.tomlImpact
- No stable release-please PR has been created since March 13 (the last successful stable release was
hve-core-v3.0.2). - Python linting and testing have never run in CI against the powerpoint skill because the project was never discovered.
Files Changed
.github/workflows/release-stable.yml— addif:guard torelease-pleasejob; add-ForcetoGet-ChildItem.github/workflows/pr-validation.yml— add-ForcetoGet-ChildItem
Verification
After merging, the next push to main should:
discover-python-projectsoutputshas-projects=truewith the powerpoint skill directorypython-lintandpytestrun against the powerpoint skillrelease-pleaseruns regardless of whether Python projects exist