Allow triggering after release workflow manually (#44671)
Release Notes: - N/A
This commit is contained in:
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user