Allow triggering after release workflow manually (#44671)

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin
2025-12-11 16:54:10 -07:00
committed by GitHub
parent 8d0fff688f
commit 0a1e5f93a0
2 changed files with 63 additions and 32 deletions

View File

@@ -4,10 +4,18 @@ use crate::tasks::workflows::{
release::{self, notify_on_failure},
runners,
steps::{CommonJobConditions, NamedJob, checkout_repo, dependant_job, named},
vars::{self, StepOutput},
vars::{self, StepOutput, WorkflowInput},
};
const TAG_NAME: &str = "${{ github.event.release.tag_name || inputs.tag_name }}";
const IS_PRERELEASE: &str = "${{ github.event.release.prerelease || inputs.prerelease }}";
const RELEASE_BODY: &str = "${{ github.event.release.body || inputs.body }}";
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();
let post_to_discord = post_to_discord(&[&refresh_zed_dev]);
let publish_winget = publish_winget();
@@ -20,7 +28,14 @@ pub fn after_release() -> Workflow {
]);
named::workflow()
.on(Event::default().release(Release::default().types(vec![ReleaseType::Published])))
.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)
.add_job(post_to_discord.name, post_to_discord.job)
.add_job(publish_winget.name, publish_winget.job)
@@ -30,9 +45,9 @@ pub fn after_release() -> Workflow {
fn rebuild_releases_page() -> NamedJob {
fn refresh_cloud_releases() -> Step<Run> {
named::bash(
"curl -fX POST https://cloud.zed.dev/releases/refresh?expect_tag=${{ github.event.release.tag_name }}",
)
named::bash(format!(
"curl -fX POST https://cloud.zed.dev/releases/refresh?expect_tag={TAG_NAME}"
))
}
fn redeploy_zed_dev() -> Step<Run> {
@@ -51,15 +66,16 @@ fn rebuild_releases_page() -> NamedJob {
fn post_to_discord(deps: &[&NamedJob]) -> NamedJob {
fn get_release_url() -> Step<Run> {
named::bash(indoc::indoc! {r#"
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
URL="https://zed.dev/releases/preview"
else
URL="https://zed.dev/releases/stable"
fi
named::bash(format!(
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"
"#})
echo "URL=$URL" >> "$GITHUB_OUTPUT"
"#
))
.id("get-release-url")
}
@@ -72,11 +88,9 @@ fn post_to_discord(deps: &[&NamedJob]) -> NamedJob {
.id("get-content")
.add_with((
"stringToTruncate",
indoc::indoc! {r#"
📣 Zed [${{ github.event.release.tag_name }}](<${{ steps.get-release-url.outputs.URL }}>) was just released!
${{ github.event.release.body }}
"#},
format!(
"📣 Zed [{TAG_NAME}](<${{{{ steps.get-release-url.outputs.URL }}}}>) was just released!\n\n{RELEASE_BODY}\n"
),
))
.add_with(("maxLength", 2000))
.add_with(("truncationSymbol", "..."))
@@ -102,16 +116,17 @@ fn post_to_discord(deps: &[&NamedJob]) -> NamedJob {
fn publish_winget() -> NamedJob {
fn set_package_name() -> (Step<Run>, StepOutput) {
let step = named::pwsh(indoc::indoc! {r#"
if ("${{ github.event.release.prerelease }}" -eq "true") {
$PACKAGE_NAME = "ZedIndustries.Zed.Preview"
} else {
$PACKAGE_NAME = "ZedIndustries.Zed"
}
let script = format!(
r#"if ("{IS_PRERELEASE}" -eq "true") {{
$PACKAGE_NAME = "ZedIndustries.Zed.Preview"
}} else {{
$PACKAGE_NAME = "ZedIndustries.Zed"
}}
echo "PACKAGE_NAME=$PACKAGE_NAME" >> $env:GITHUB_OUTPUT
"#})
.id("set-package-name");
echo "PACKAGE_NAME=$PACKAGE_NAME" >> $env:GITHUB_OUTPUT
"#
);
let step = named::pwsh(&script).id("set-package-name");
let output = StepOutput::new(&step, "PACKAGE_NAME");
(step, output)
@@ -124,6 +139,7 @@ fn publish_winget() -> NamedJob {
"19e706d4c9121098010096f9c495a70a7518b30f", // v2
)
.add_with(("identifier", package_name.to_string()))
.add_with(("release-tag", TAG_NAME))
.add_with(("max-versions-to-keep", 5))
.add_with(("token", vars::WINGET_TOKEN))
}