From 2f539acb0409bb6219e99ec18dfd294a546dd145 Mon Sep 17 00:00:00 2001 From: "David M. Anderson" Date: Thu, 17 Sep 2026 00:20:17 -0500 Subject: [PATCH] dist attaches to the release ship creates ship's publish step runs `gh release create` for the tag before any build starts. dist's host job ended with a `gh release create` of its own for the same tag, which GitHub rejects as already_exists, so host went red, the homebrew job that needs it was skipped, and none of the archives, installers or checksums reached the release. `create-release = false` regenerates that step as `gh release upload` followed by `gh release edit --draft=false`, which attaches to the release already there. Workflow regenerated with dist 0.31.0, the pinned version. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_014BDPzwzMCSL2rhkrmGCAtP --- .github/workflows/release.yml | 12 +++++------- dist-workspace.toml | 2 ++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4564944..800175f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,8 +10,8 @@ # * uploads those artifacts to temporary workflow zip # * on success, uploads the artifacts to a GitHub Release # -# Note that the GitHub Release will be created with a generated -# title/body based on your changelogs. +# Note that a GitHub Release with this tag is assumed to exist as a draft +# with the appropriate title/body, and will be undrafted for you. name: Release permissions: @@ -269,14 +269,12 @@ jobs: - name: Create GitHub Release env: PRERELEASE_FLAG: "${{ fromJson(steps.host.outputs.manifest).announcement_is_prerelease && '--prerelease' || '' }}" - ANNOUNCEMENT_TITLE: "${{ fromJson(steps.host.outputs.manifest).announcement_title }}" - ANNOUNCEMENT_BODY: "${{ fromJson(steps.host.outputs.manifest).announcement_github_body }}" RELEASE_COMMIT: "${{ github.sha }}" run: | - # Write and read notes from a file to avoid quoting breaking things - echo "$ANNOUNCEMENT_BODY" > $RUNNER_TEMP/notes.txt + # If we're editing a release in place, we need to upload things ahead of time + gh release upload "${{ needs.plan.outputs.tag }}" artifacts/* - gh release create "${{ needs.plan.outputs.tag }}" --target "$RELEASE_COMMIT" $PRERELEASE_FLAG --title "$ANNOUNCEMENT_TITLE" --notes-file "$RUNNER_TEMP/notes.txt" artifacts/* + gh release edit "${{ needs.plan.outputs.tag }}" --target "$RELEASE_COMMIT" $PRERELEASE_FLAG --draft=false publish-homebrew-formula: needs: diff --git a/dist-workspace.toml b/dist-workspace.toml index f8acdd8..3092967 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -15,3 +15,5 @@ publish-jobs = ["homebrew"] targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu", "x86_64-pc-windows-msvc"] # Where to host releases hosting = "github" +# ship creates the release; dist attaches to it. +create-release = false