Skip to content

feat: post nightly-release Slack notifications via a Workflow Builder trigger - W-24443946 - #192

Merged
madhur310 merged 3 commits into
mainfrom
ms/fix-nightly-dead-slack-webhook
Oct 8, 2026
Merged

madhur310 merged 3 commits into
mainfrom
ms/fix-nightly-dead-slack-webhook

Conversation

@madhur310

@madhur310 madhur310 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • IDEE_MAIN_SLACK_WEBHOOK is dead: posting to it returns {"ok":false,"error":"webhook_not_found"} (404). This meant vscode-publish-extensions.yml's slack-notify (success) and slack-notify-failure jobs have likely been silently failing to post for every consumer in non-dry-run runs.
  • Initial fix in this PR swapped to IDEE_RELEASE_SLACK_WEBHOOK (confirmed alive) as a stopgap, but that channel turned out to be unmonitored/unused.
  • Final fix: both Slack jobs now post directly to a dedicated Slack Workflow Builder webhook trigger via curl, instead of slackapi/slack-github-action with a classic incoming-webhook Block Kit payload. That trigger's payload contract is a flat set of variables, not a free-form message, so the "Notify Slack" steps were rewritten to build:
    {
      "status": "success|failure",
      "error_details": "... (which job failed, empty on success)",
      "run_url": "https://github.com/<repo>/actions/runs/<run_id>",
      "registries": "...",
      "extension_names": "...",
      "versions": "...",
      "release_type": "Pre-release|Stable"
    }
  • New secret IDEE_NIGHTLY_RELEASE_WEBHOOK holds the trigger URL, set as a repo-level secret on all three current consumers (salesforcedx-vscode, apex-language-support, salesforcedx-vscode-ci-testing) since they all call this reusable workflow with secrets: inherit.
  • Dropped the now-dead slack-notification-title input (only used by the removed Block Kit payload; no caller passed it explicitly).

Known gap

forcedotcom/b2c-dx's publish-vscode.yml references IDEE_MAIN_SLACK_WEBHOOK directly in its own file, independent of this reusable workflow — this PR doesn't fix that call site.

Test plan

  • Not live-tested against this reusable workflow directly (would require a real nightly-release/publish run against a consumer repo). Confidence comes from verifying the new trigger's schema and curl payload shape against the equivalent, already-live-tested pattern in forcedotcom/salesforcedx-vscode PR #8379.

Slack returns {"ok":false,"error":"webhook_not_found"} (404) for
IDEE_MAIN_SLACK_WEBHOOK, so nightly-release's real (non-dry-run)
success/failure notifications in this workflow have likely been
silently broken. IDEE_RELEASE_SLACK_WEBHOOK verified alive via a
diagnostic Slack post. Both are org-level secrets inherited by callers
via `secrets: inherit`, so this applies uniformly across consumers.

Note: forcedotcom/b2c-dx references IDEE_MAIN_SLACK_WEBHOOK directly in
its own publish-vscode.yml, independent of this reusable workflow -
this fix doesn't cover that call site.
… trigger

Replaces the classic incoming-webhook Block Kit payload (which depended
on the dead IDEE_MAIN_SLACK_WEBHOOK, superseded in a prior commit by
IDEE_RELEASE_SLACK_WEBHOOK as a stopgap) with a direct curl POST to a
dedicated Slack Workflow Builder trigger. That trigger's payload
contract is a flat set of variables (status, error_details, run_url,
registries, extension_names, versions, release_type) rather than a
free-form message, so the "Notify Slack" steps in both slack-notify
and slack-notify-failure are rewritten accordingly. Drops the now-dead
slack-notification-title input.
@madhur310 madhur310 changed the title fix: use IDEE_RELEASE_SLACK_WEBHOOK, IDEE_MAIN_SLACK_WEBHOOK is dead feat: post nightly-release Slack notifications via a Workflow Builder trigger Oct 7, 2026
@madhur310 madhur310 changed the title feat: post nightly-release Slack notifications via a Workflow Builder trigger feat: post nightly-release Slack notifications via a Workflow Builder trigger - W-24443946 Oct 7, 2026
description: "CBWeb internal marketplace publishing token"
required: false
IDEE_MAIN_SLACK_WEBHOOK:
IDEE_NIGHTLY_RELEASE_WEBHOOK:

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.

if this is meant as a generic workflow to publish extensions, the secret could just be named
"SLACK_WEBHOOK" and then consumers could put whatever value there. It doesn't have to match the name of the secret stored in github.

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.

Good point, done — renamed to SLACK_WEBHOOK: 2d43c37fb. Since the three current callers use secrets: inherit rather than explicit secret mapping, I renamed the actual stored secret in all three consumer repos (salesforcedx-vscode, apex-language-support, salesforcedx-vscode-ci-testing) from IDEE_NIGHTLY_RELEASE_WEBHOOK to SLACK_WEBHOOK to match, rather than switching them to explicit mapping.

@mshanemc mshanemc left a comment

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.

approved pending comment resolution

…_WEBHOOK

Per review feedback: this is a generic reusable workflow, so the
declared secret name shouldn't bake in a consumer-specific naming
convention. The actual GitHub secret name a caller stores doesn't need
to match this internal declaration unless using secrets: inherit, in
which case it does need to match -- so the stored secrets in each
consumer repo are being renamed to SLACK_WEBHOOK to match, rather than
switching callers from inherit to explicit secret mapping.
@madhur310
madhur310 merged commit 6bff89d into main Oct 8, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants