Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ on:
required: false
type: boolean
default: false
create-github-release:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

each day, the parameter list grows

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which is fine if the default is "do what we want most of the time"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And I now believe this does NOT do that. This is the opposite of that, imo. Commented further below. I could be wrong.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dropped the input

description: "Create the Git tag and GitHub Release for a custom stable release. Stable all releases do this automatically."
required: false
type: boolean
default: false
helm-version:
description: "Optional exact Helm chart version override for stable Helm-only releases."
required: false
Expand Down Expand Up @@ -159,6 +164,7 @@ jobs:
helm_version_override: ${{ steps.plan.outputs.helm_version_override }}
update_ngc_metadata: ${{ steps.plan.outputs.update_ngc_metadata }}
send_notifications: ${{ steps.plan.outputs.send_notifications }}
create_github_release: ${{ steps.plan.outputs.create_github_release }}
dry_run: ${{ steps.plan.outputs.dry_run }}
steps:
# This job is intentionally the first gate. It resolves the user's
Expand Down Expand Up @@ -189,6 +195,9 @@ jobs:
const releaseScope = isManual ? (inputs["release-scope"] || "all") : "all";
const updateNgcMetadata = isManual && inputs["update-ngc-metadata"] === "true";
const sendNotifications = inputs["send-notifications"] !== "false";
const createGitHubReleaseRequested = (
isManual && inputs["create-github-release"] === "true"
);
const dryRun = isManual && inputs["dry-run"] === "true";
const helmVersionOverride = isManual ? (inputs["helm-version"] ?? "").trim() : "";

Expand Down Expand Up @@ -218,6 +227,14 @@ jobs:
}
}

const createGitHubRelease = (
releaseType === "stable"
&& (
releaseScope === "all"
|| (releaseScope === "custom" && createGitHubReleaseRequested)
)
);

sourceSha = sourceSha.toLowerCase();

const presets = {
Expand Down Expand Up @@ -326,6 +343,7 @@ jobs:
core.setOutput("helm_version_override", helmVersionOverride);
core.setOutput("update_ngc_metadata", String(updateNgcMetadata));
core.setOutput("send_notifications", String(sendNotifications));
core.setOutput("create_github_release", String(createGitHubRelease));
core.setOutput("dry_run", String(dryRun));

core.info(
Expand Down Expand Up @@ -1100,7 +1118,7 @@ jobs:
needs: [plan-release, poll-final-release]
if: >-
needs.plan-release.outputs.release_type == 'stable' &&
needs.plan-release.outputs.release_scope == 'all' &&
needs.plan-release.outputs.create_github_release == 'true' &&

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this at all? I don't see any reason not to just remove this and not introduce the new parameter.

An improvement would be to also just output what it would have created with ACT="true", but I emphatically reject needing to explicitly ask for release when I said make a stabe release already. :)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But we can use stable custom runs to retry failed artifacts too, so we need a way to say whether that run should also cut the tag/release.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise it'll fail by default if the tag already exists

@crookedstorm crookedstorm Jul 29, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about checking for the tag first and making it idempotent instead? This adds a random clickbox for what it should do by default.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the PR

needs.plan-release.outputs.dry_run != 'true' &&
needs.poll-final-release.result == 'success'
runs-on: ubuntu-latest
Expand Down
11 changes: 7 additions & 4 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ and select **Run workflow**. The form shows the allowed custom artifact IDs.
| `release-scope` | `all` by default. Select `wheels`, `containers`, `helm`, or `custom` for a subset. |
| `wheel-ids`, `container-ids` | Comma-separated IDs used only with `release-scope: custom`. Each ID must be in the catalog above; duplicates and empty entries fail validation. |
| `include-helm` | Includes the Helm chart in a custom release. |
| `create-github-release` | Creates the Git tag and GitHub Release after a custom stable release succeeds. Stable releases with `release-scope: all` do this automatically. |
| `helm-version` | Optional exact SemVer Helm chart version for stable Helm-only releases. The stable release label still comes from `version`. |
| `update-ngc-metadata` | Also runs the reusable NGC metadata workflow for `nemo-platform` and `nemo-platform-dev`. It checks out the workflow ref, normally `main`. |
| `send-notifications` | Sends Slack start and final-status notifications. Defaults to `true`. |
Expand All @@ -67,6 +68,7 @@ Examples:
| --- | --- |
| Scheduled-style nightly | Leave `release-type` as `nightly` and use the default `all` scope. |
| Stable full release | `release-type: stable`, `source-sha: <40-character SHA>`, `version: <MAJOR.MINOR.PATCH>`, `release-scope: all`. |
| Stable custom release with tag | Select the custom artifacts, then set `release-type: stable` and `create-github-release: true`. |
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
| One container | `release-scope: custom`, `container-ids: nmp-customizer-tasks`. |
| Helm-only validation | `release-scope: helm`, `dry-run: true`. |
| Stable Helm-only chart override | `release-type: stable`, `source-sha: <40-character SHA>`, `version: 0.1.0`, `release-scope: helm`, `helm-version: 0.1.0+helmfix1`. |
Expand Down Expand Up @@ -95,10 +97,11 @@ America/Los_Angeles.
available before continuing. Nightly wheels are staged but not published, so
they are not polled. The polling job times out after four hours and sends
a Slack alert after two hours if it is still waiting.
7. For a non-dry-run stable release with `release-scope: all`, creates the
GitHub release and tag at the selected SHA. GitHub generates the release
notes from the previous numeric SemVer tag. Subset releases do not create a
GitHub release or tag.
7. For a non-dry-run stable release with `release-scope: all`, or a custom
stable release with `create-github-release: true`, creates the GitHub release
and tag at the selected SHA. GitHub generates the release notes from the
previous numeric SemVer tag. Other subset releases do not create a GitHub
release or tag.
8. After polling succeeds, releases that include the Helm chart dispatch a
deployment signal to the configured internal release repository. The
downstream workflow creates a pending GitHub Deployment, and the deployment
Expand Down
Loading