Skip to content

ci(release): split publish workflow into build, publish, and release jobs - #63

Merged
shaonianche merged 5 commits into
mainfrom
agent/code-expert/release-split-jobs
Aug 5, 2026
Merged

ci(release): split publish workflow into build, publish, and release jobs#63
shaonianche merged 5 commits into
mainfrom
agent/code-expert/release-split-jobs

Conversation

@shaonianche

Copy link
Copy Markdown
Owner

Summary

Follow-up to #62: split the Release workflow into three jobs without a GitHub Environment / required-reviewer gate (small maintainer set).

Job Responsibility
build Tag ↔ pyproject gate, uv build, dist version check, changelog extraction, upload artifact
publish Download artifact → PyPI (OIDC Trusted Publishing only)
github-release Download artifact → create GitHub Release

Also updates docs/RELEASING.md failure notes: prefer Re-run failed jobs, avoid Re-run all jobs after a successful PyPI upload.

Out of scope

  • No environment: pypi
  • No required reviewers / wait timers
  • No package version bump / no real release

Test plan

  • YAML structure: three jobs, no environment:, id-token only on publish
  • CI green on this PR
  • Next real tag release: observe three jobs; if github-release fails, re-run failed only

shaonianche and others added 2 commits August 5, 2026 03:09
…jobs

Separate PyPI upload from GitHub Release so a failed release step can be
re-run without re-uploading to PyPI. No Environment approval gate.

Co-authored-by: multica-agent <github@multica.ai>
Co-authored-by: multica-agent <github@multica.ai>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e80eb9a023

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/publish.yml Outdated
path: |
dist/*.whl
dist/*.tar.gz
.changelog.md

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include the hidden changelog artifact

On any tag release, this split workflow now depends on uploading .changelog.md from build and downloading it in github-release, but actions/upload-artifact ignores hidden files by default unless include-hidden-files is set (see https://github.com/actions/upload-artifact#uploading-hidden-files). The dist files still make this upload step succeed, so PyPI can publish and then softprops/action-gh-release fails because body_path: .changelog.md is missing, breaking the repository's Release workflow invariant that tags create a GitHub Release from CHANGELOG.md.

Useful? React with 👍 / 👎.

upload-artifact ignores dotfiles by default, so .changelog.md never
reached the github-release job. Use release-notes.md instead.

Co-authored-by: multica-agent <github@multica.ai>
@shaonianche

Copy link
Copy Markdown
Owner Author

Addressed Codex P1 (discussion):

actions/upload-artifact ignores hidden files unless include-hidden-files is set. The extracted notes were named .changelog.md, so the upload could succeed on wheels alone while the GitHub Release job later failed on a missing body_path.

Fix: write/upload/use non-hidden release-notes.md instead of .changelog.md (same content, still produced before PyPI publish).

Co-authored-by: multica-agent <github@multica.ai>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 20d605884b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/publish.yml Outdated

steps:
- name: Download release artifacts
uses: actions/download-artifact@v7.0.1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Pin download-artifact to an existing release

On every tag after build succeeds, the publish job tries to resolve actions/download-artifact@v7.0.1; I checked the upstream releases and that tag returns 404, with the release list going from v7.0.0 to v8.0.0/v8.0.1. This means both newly added artifact download steps fail before PyPI upload or GitHub Release creation, so pin this to an existing ref such as v7.0.0, v8.0.1, or a major tag.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in the latest commit: pinned both download steps to actions/download-artifact@v7.0.0 (verified tag exists). v7.0.1 was a non-existent pin; upload-artifact@v7.0.1 stays as-is because that tag is valid.

@codecov

codecov Bot commented Aug 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.72%. Comparing base (10daab3) to head (518a1d2).
⚠️ Report is 1 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #63   +/-   ##
=======================================
  Coverage   92.72%   92.72%           
=======================================
  Files          36       36           
  Lines        2721     2721           
  Branches      461      461           
=======================================
  Hits         2523     2523           
  Misses        117      117           
  Partials       81       81           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

actions/download-artifact has no v7.0.1 release (404). Use v7.0.0 so the
publish and github-release jobs can resolve the action after build.

Co-authored-by: multica-agent <github@multica.ai>
@shaonianche

Copy link
Copy Markdown
Owner Author

Addressed Codex P1 (discussion):

actions/download-artifact@v7.0.1 does not exist upstream (404). Both download steps are now pinned to actions/download-artifact@v7.0.0, which is a real release tag. upload-artifact@v7.0.1 is unchanged (that tag does exist).

Verified:

  • download-artifact@v7.0.1 → 404
  • download-artifact@v7.0.0 → 200

Earlier P1 (hidden .changelog.md) remains fixed via non-hidden release-notes.md.

@shaonianche
shaonianche merged commit d349b74 into main Aug 5, 2026
7 checks passed
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.

1 participant