diff --git a/.github/workflows/after_release.yml b/.github/workflows/after_release.yml index 269b7465f617bc8ec4dceaeb11c987bfaaf93cbf..4ecb8d9328fbda6c6bb63d813f2a1847a8c4feab 100644 --- a/.github/workflows/after_release.yml +++ b/.github/workflows/after_release.yml @@ -1,6 +1,9 @@ # Generated from xtask::workflows::after_release # Rebuild with `cargo xtask workflows`. name: after_release +env: + TAG_NAME: ${{ github.event.release.tag_name || inputs.tag_name }} + IS_PRERELEASE: ${{ github.event.release.prerelease || inputs.prerelease }} on: release: types: @@ -11,6 +14,10 @@ on: description: tag_name required: true type: string + prerelease: + description: prerelease + required: true + type: boolean body: description: body type: string @@ -21,7 +28,7 @@ jobs: runs-on: namespace-profile-2x4-ubuntu-2404 steps: - name: after_release::rebuild_releases_page::refresh_cloud_releases - run: curl -fX POST https://cloud.zed.dev/releases/refresh?expect_tag=${{ github.event.release.tag_name || inputs.tag_name }} + run: curl -fX POST https://cloud.zed.dev/releases/refresh?expect_tag=$TAG_NAME - name: steps::checkout_repo uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd with: @@ -40,8 +47,8 @@ jobs: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} with: - channel: ${{ endsWith(github.event.release.tag_name || inputs.tag_name, '-pre') && 'preview' || 'stable' }} - checkout_ref: ${{ github.event.release.tag_name || inputs.tag_name }} + channel: ${{ env.IS_PRERELEASE == 'true' && 'preview' || 'stable' }} + checkout_ref: ${{ env.TAG_NAME }} post_to_discord: needs: - rebuild_releases_page @@ -51,7 +58,7 @@ jobs: - id: get-release-url name: after_release::post_to_discord::get_release_url run: | - if [ "${{ endsWith(github.event.release.tag_name || inputs.tag_name, '-pre') }}" == "true" ]; then + if [ "$IS_PRERELEASE" == "true" ]; then URL="https://zed.dev/releases/preview" else URL="https://zed.dev/releases/stable" @@ -63,7 +70,7 @@ jobs: uses: 2428392/gh-truncate-string-action@b3ff790d21cf42af3ca7579146eedb93c8fb0757 with: stringToTruncate: | - 📣 Zed [${{ github.event.release.tag_name || inputs.tag_name }}](<${{ steps.get-release-url.outputs.URL }}>) was just released! + 📣 Zed [${{ env.TAG_NAME }}](<${{ steps.get-release-url.outputs.URL }}>) was just released! ${{ github.event.release.body || inputs.body }} maxLength: 2000 @@ -98,7 +105,7 @@ jobs: - id: set-package-name name: after_release::publish_winget::set_package_name run: | - if ("${{ endsWith(github.event.release.tag_name || inputs.tag_name, '-pre') }}" -eq "true") { + if ($env:IS_PRERELEASE -eq "true") { $PACKAGE_NAME = "ZedIndustries.Zed.Preview" } else { $PACKAGE_NAME = "ZedIndustries.Zed" @@ -110,7 +117,7 @@ jobs: uses: vedantmgoyal9/winget-releaser@19e706d4c9121098010096f9c495a70a7518b30f with: identifier: ${{ steps.set-package-name.outputs.PACKAGE_NAME }} - release-tag: ${{ github.event.release.tag_name || inputs.tag_name }} + release-tag: ${{ env.TAG_NAME }} max-versions-to-keep: 5 token: ${{ secrets.WINGET_TOKEN }} create_sentry_release: diff --git a/tooling/xtask/src/tasks/workflows/after_release.rs b/tooling/xtask/src/tasks/workflows/after_release.rs index 766618e23b48890bb18d54b0bd93d1f4c5d2ad7c..7c9ccdb7b99e54436ca9fc9c6e5d156aa74318b7 100644 --- a/tooling/xtask/src/tasks/workflows/after_release.rs +++ b/tooling/xtask/src/tasks/workflows/after_release.rs @@ -7,14 +7,15 @@ use crate::tasks::workflows::{ vars::{self, StepOutput, WorkflowInput}, }; -const TAG_NAME: &str = "${{ github.event.release.tag_name || inputs.tag_name }}"; -const IS_PRERELEASE: &str = - "${{ endsWith(github.event.release.tag_name || inputs.tag_name, '-pre') }}"; +const TAG_NAME_ENV: &str = "${{ github.event.release.tag_name || inputs.tag_name }}"; +const IS_PRERELEASE_ENV: &str = "${{ github.event.release.prerelease || inputs.prerelease }}"; +const TAG_NAME: &str = "${{ env.TAG_NAME }}"; const RELEASE_BODY: &str = "${{ github.event.release.body || inputs.body }}"; -const DOCS_CHANNEL: &str = "${{ endsWith(github.event.release.tag_name || inputs.tag_name, '-pre') && 'preview' || 'stable' }}"; +const DOCS_CHANNEL: &str = "${{ env.IS_PRERELEASE == 'true' && 'preview' || 'stable' }}"; pub fn after_release() -> Workflow { let tag_name = WorkflowInput::string("tag_name", None); + let prerelease = WorkflowInput::bool("prerelease", None); let body = WorkflowInput::string("body", Some(String::new())); let refresh_zed_dev = rebuild_releases_page(); @@ -36,11 +37,14 @@ pub fn after_release() -> Workflow { }; named::workflow() + .add_env(("TAG_NAME", TAG_NAME_ENV)) + .add_env(("IS_PRERELEASE", IS_PRERELEASE_ENV)) .on(Event::default() .release(Release::default().types(vec![ReleaseType::Published])) .workflow_dispatch( WorkflowDispatch::default() .add_input(tag_name.name, tag_name.input()) + .add_input(prerelease.name, prerelease.input()) .add_input(body.name, body.input()), )) .add_job(refresh_zed_dev.name, refresh_zed_dev.job) @@ -91,9 +95,7 @@ fn deploy_docs() -> NamedJob { fn rebuild_releases_page() -> NamedJob { fn refresh_cloud_releases() -> Step { - named::bash(format!( - "curl -fX POST https://cloud.zed.dev/releases/refresh?expect_tag={TAG_NAME}" - )) + named::bash("curl -fX POST https://cloud.zed.dev/releases/refresh?expect_tag=$TAG_NAME") } fn redeploy_zed_dev() -> Step { @@ -112,16 +114,16 @@ fn rebuild_releases_page() -> NamedJob { fn post_to_discord(deps: &[&NamedJob]) -> NamedJob { fn get_release_url() -> Step { - named::bash(format!( - r#"if [ "{IS_PRERELEASE}" == "true" ]; then + named::bash( + r#"if [ "$IS_PRERELEASE" == "true" ]; then URL="https://zed.dev/releases/preview" else URL="https://zed.dev/releases/stable" fi echo "URL=$URL" >> "$GITHUB_OUTPUT" -"# - )) +"#, + ) .id("get-release-url") } @@ -182,17 +184,15 @@ fn publish_winget() -> NamedJob { } fn set_package_name() -> (Step, StepOutput) { - let script = format!( - r#"if ("{IS_PRERELEASE}" -eq "true") {{ + let script = r#"if ($env:IS_PRERELEASE -eq "true") { $PACKAGE_NAME = "ZedIndustries.Zed.Preview" -}} else {{ +} else { $PACKAGE_NAME = "ZedIndustries.Zed" -}} +} echo "PACKAGE_NAME=$PACKAGE_NAME" >> $env:GITHUB_OUTPUT -"# - ); - let step = named::pwsh(&script).id("set-package-name"); +"#; + let step = named::pwsh(script).id("set-package-name"); let output = StepOutput::new(&step, "PACKAGE_NAME"); (step, output)