Fix `release.yml` workflow (#41675)

Ben Kunkle created

Closes #ISSUE

Release Notes:

- N/A *or* Added/Fixed/Improved ...

Change summary

.github/workflows/release.yml                |  8 +++++---
tooling/xtask/src/tasks/workflows/release.rs | 17 ++++++++++++++---
2 files changed, 19 insertions(+), 6 deletions(-)

Detailed changes

.github/workflows/release.yml 🔗

@@ -162,12 +162,14 @@ jobs:
     - name: mkdir -p target/
       run: mkdir -p target/
       shell: bash -euxo pipefail {0}
-    - name: script/draft-release-notes "$RELEASE_VERSION" "$RELEASE_CHANNEL" > target/release-notes.md || true
-      run: script/draft-release-notes "$RELEASE_VERSION" "$RELEASE_CHANNEL" > target/release-notes.md || true
+    - name: release::create_draft_release::generate_release_notes
+      run: node --redirect-warnings=/dev/null ./script/draft-release-notes "$RELEASE_VERSION" "$RELEASE_CHANNEL" > target/release-notes.md
       shell: bash -euxo pipefail {0}
-    - name: script/create-draft-release target/release-notes.md
+    - name: release::create_draft_release::create_release
       run: script/create-draft-release target/release-notes.md
       shell: bash -euxo pipefail {0}
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     timeout-minutes: 60
   bundle_linux_arm64:
     needs:

tooling/xtask/src/tasks/workflows/release.rs 🔗

@@ -164,6 +164,17 @@ fn upload_release_assets(deps: &[&NamedJob], bundle_jobs: &ReleaseBundleJobs) ->
 }
 
 fn create_draft_release() -> NamedJob {
+    fn generate_release_notes() -> Step<Run> {
+        named::bash(
+            r#"node --redirect-warnings=/dev/null ./script/draft-release-notes "$RELEASE_VERSION" "$RELEASE_CHANNEL" > target/release-notes.md"#,
+        )
+    }
+
+    fn create_release() -> Step<Run> {
+        named::bash("script/create-draft-release target/release-notes.md")
+            .add_env(("GITHUB_TOKEN", "${{ secrets.GITHUB_TOKEN }}"))
+    }
+
     named::job(
         release_job(&[])
             .runs_on(runners::LINUX_SMALL)
@@ -177,10 +188,10 @@ fn create_draft_release() -> NamedJob {
                     .add_with(("clean", false))
                     .add_with(("ref", "${{ github.ref }}")),
             )
-            .add_step(steps::script("script/determine-release-channel")) // export RELEASE_CHANNEL and RELEASE_VERSION
+            .add_step(steps::script("script/determine-release-channel"))
             .add_step(steps::script("mkdir -p target/"))
-            .add_step(steps::script(r#"script/draft-release-notes "$RELEASE_VERSION" "$RELEASE_CHANNEL" > target/release-notes.md || true"#))
-            .add_step(steps::script("script/create-draft-release target/release-notes.md")),
+            .add_step(generate_release_notes())
+            .add_step(create_release()),
     )
 }