Skip to content

Fix signed macOS release promotion follow-up jobs#22788

Merged
bolinfest merged 9 commits into
mainfrom
shijie/fix-signed-promotion-dotslash-cleanup
May 15, 2026
Merged

Fix signed macOS release promotion follow-up jobs#22788
bolinfest merged 9 commits into
mainfrom
shijie/fix-signed-promotion-dotslash-cleanup

Conversation

@shijie-oai
Copy link
Copy Markdown
Collaborator

@shijie-oai shijie-oai commented May 15, 2026

Why

The release_mode=promote_signed path intentionally skips the build jobs after signed macOS artifacts are staged, then runs the release job from the signed handoff. In the rust-v0.131.0-alpha.19 promotion run, release succeeded but the npm, PyPI, and latest-alpha-cli follow-up jobs were skipped because their custom job if: expressions let GitHub Actions apply the implicit success() status check before reading needs.release.outputs.*.

The unsigned build handoff does not need DotSlash manifests. Publishing unsigned DotSlash manifests creates release assets that can conflict with the later signed promotion, especially shared outputs such as bwrap, codex-command-runner, and codex-windows-sandbox-setup.

What Changed

  • Stop publishing DotSlash manifests when SIGN_MACOS == 'false'.
  • Delete .github/dotslash-unsigned-config.json.
  • Gate post-release jobs with the !cancelled() status function plus an explicit needs.release.result == 'success' check before consulting release outputs.
  • Keep the existing publish eligibility rules for npm, PyPI, WinGet, and latest-alpha-cli.

Verification

  • rg -n "dotslash-unsigned-config|SIGN_MACOS == 'false'.*dotslash|unsigned-config" .github/workflows/rust-release.yml .github || true
  • git diff --check -- .github/workflows/rust-release.yml .github/dotslash-unsigned-config.json

@shijie-oai shijie-oai changed the title ci: clean stale dotslash manifests during signed promotion Chore: finish publishing May 15, 2026
@shijie-oai shijie-oai changed the title Chore: finish publishing Fix signed macOS release promotion follow-up jobs May 15, 2026
Comment thread .github/workflows/rust-release.yml Outdated
Comment on lines +1218 to +1223
for dotslash_asset_name in "${dotslash_asset_names[@]}"; do
if [[ "$asset_name" == "$dotslash_asset_name" ]]; then
delete_asset=true
break
fi
done
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

For now maps to codex, codex-app-server, codex-responses-api-proxy, bwrap, codex-command-runner, codex-windows-sandbox-setup, codex-zsh, argument-comment-lint but moved away from hardcoding to better support future expansion.

Comment thread .github/workflows/rust-release.yml Outdated
Comment on lines +1281 to +1286
# promote_signed intentionally skips build jobs that are ancestors of release;
# include the always() status function so Actions does not apply its implicit
# success() check to the whole dependency chain before evaluating release outputs.
if: >-
${{
always() &&
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I think Codex is right - I am not expert in GHA and he said did make sense. Debated between !cancled vs sucess but success sounds less sketchy...

@shijie-oai shijie-oai requested a review from bolinfest May 15, 2026 07:11
@shijie-oai shijie-oai marked this pull request as ready for review May 15, 2026 07:11
Comment on lines -1226 to -1233
- if: ${{ env.SIGN_MACOS == 'false' }}
uses: facebook/dotslash-publish-release@9c9ec027515c34db9282a09a25a9cab5880b2c52 # v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag: ${{ github.ref_name }}
config: .github/dotslash-unsigned-config.json

Copy link
Copy Markdown
Collaborator Author

@shijie-oai shijie-oai May 15, 2026

Choose a reason for hiding this comment

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

ya no need to publish unsigned dotslash anymore.

Comment thread .github/workflows/rust-release.yml Outdated
# success() check to the whole dependency chain before evaluating release outputs.
if: >-
${{
always() &&
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
always() &&
!cancelled() &&

Comment thread .github/workflows/rust-release.yml Outdated
if: ${{ needs.release.outputs.should_publish_python_runtime == 'true' }}
if: >-
${{
always() &&
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
always() &&
!cancelled() &&

Comment thread .github/workflows/rust-release.yml Outdated
if: ${{ needs.release.outputs.sign_macos == 'true' && !contains(needs.release.outputs.version, '-') }}
if: >-
${{
always() &&
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
always() &&
!cancelled() &&

Comment thread .github/workflows/rust-release.yml Outdated
if: ${{ needs.release.outputs.sign_macos == 'true' }}
if: >-
${{
always() &&
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
always() &&
!cancelled() &&

@bolinfest bolinfest merged commit 302149d into main May 15, 2026
29 checks passed
@bolinfest bolinfest deleted the shijie/fix-signed-promotion-dotslash-cleanup branch May 15, 2026 07:43
@github-actions github-actions Bot locked and limited conversation to collaborators May 15, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants