Skip to content

ci: adjust 3.x branch references#16358

Merged
denolfe merged 9 commits into
3.xfrom
ci/v3-scripts
Apr 23, 2026
Merged

ci: adjust 3.x branch references#16358
denolfe merged 9 commits into
3.xfrom
ci/v3-scripts

Conversation

@denolfe

@denolfe denolfe commented Apr 22, 2026

Copy link
Copy Markdown
Member

Overview

Adapt the 3.x branch for its new role as the v3 maintenance line now that v4 development has begun on main. Retargets release tooling, CI, templates, and documentation links from main to 3.x, and removes workflows and GitHub surfaces that only fire from the default branch.

Key Changes

  • Release tooling retargeted to 3.x

    • tools/releaser creates GitHub draft releases against 3.x.
    • create-payload-app defaults its template, example, and skill-download branch refs to 3.x.
    • .github/workflows/main.yml triggers on pushes to 3.x; the no-op publish-canary job was dropped.
    • .github/workflows/publish-prerelease.yml drops the nightly cron and the canary release type; on-demand internal / internal-debug builds remain.
  • Default-branch-only workflows and surfaces removed

    • Deleted workflows driven by schedule:, release:, issues:, and pull_request_target: events (activity-notifications, audit-dependencies, dispatch-event, label-on-change, lock-issues, post-release, post-release-templates, pr-title, stale, triage), along with their exclusively-consumed custom actions (activity, release-commenter, triage) and the orphaned .github pnpm workspace.
    • Deleted .github/ISSUE_TEMPLATE/, PULL_REQUEST_TEMPLATE.md, comments/invalid-reproduction.md, and dependabot.yml — GitHub serves all of these only from the default branch.
  • Docs, templates, and source links retargeted

    • Sweep of github.com/payloadcms/payload/(tree|blob)/main/… and raw.githubusercontent.com/payloadcms/payload/(refs/heads/)?main/… references across docs, READMEs, templates, examples, and test source, rewritten to 3.x.
    • Also handles URL-encoded %2Fpayload%2Ftree%2Fmain%2F… forms (e.g. Vercel deploy-button links) and the one-click-deploy link added post-rebase in 5a39afc.
    • Left untouched: shields.io workflow-filename badges (reference main.yml, not a branch), cross-repo payloadcms/website/refs/heads/main/… links, and all main workflow files on main itself (this PR is scoped to 3.x).
  • Template variations regenerated

    • pnpm script:gen-templates output against workspace 3.84.0: bumps payload, @payloadcms/* deps in template package.json files, refreshes importMap.js for admin-rendered templates, and re-timestamps the initial migrations for with-postgres, with-vercel-postgres, and with-vercel-website.

Design Decisions

  • Per-branch hardcoding over runtime branch detection. Each branch hardcodes its own ref (3.x here, main on v4). Simpler than branch-aware logic, trivially reviewable, and the Phase 2 swap (v4 → latest) stays a small diff.
  • Delete dormant workflows rather than trim triggers. Workflows whose only triggers are default-branch-only were removed entirely along with their private actions. Leaving hollowed-out files on 3.x would imply functionality that never fires. Removing them also shrinks dist-bundle noise (~88k of the line-deletion count is pre-built action bundles).
  • Discord release notifications stay on main. Release events always run from the default branch regardless of where the release was cut, so main's post-release.yml continues announcing both v3 patches (from 3.x) and v4 betas. No 3.x-side copy is needed.
  • No npm dist-tag collision in Phase 1. 3.x stays on latest; main will publish v4 betas to beta. Phase 2 renames the 3.x package to payload-3, freeing latest for v4 — so no per-major dist-tag scheme is needed.

Overall Flow

npm channels during Phase 1:

Branch Stable dist-tag Scheduled On-demand
3.x latest internal, internal-debug
main beta nightly canary internal, internal-debug

Release events (draft-release publish) always dispatch from the default branch — which is main — regardless of where the release was cut. A v3 patch published from 3.x therefore flows through main's post-release workflows:

sequenceDiagram
    actor Dev as Maintainer
    participant ThreeX as 3.x branch tooling
    participant NPM as npm
    participant GH as GitHub
    participant MainWF as main's post-release.yml
    participant Discord

    Dev->>ThreeX: pnpm release (v3.x.y)
    ThreeX->>NPM: publish at latest
    ThreeX->>GH: create draft release (target 3.x)
    Dev->>GH: publish release
    GH->>MainWF: release:published (fires from default branch)
    MainWF->>MainWF: release-commenter filters tag major (v3)
    MainWF->>GH: comment on v3 PRs/issues
    MainWF->>Discord: announce release
Loading

The same workflow path handles v4 releases from main, with the release-commenter filtering to v4 tags.

denolfe added 7 commits April 22, 2026 13:56
This branch will become the long-lived 3.x maintenance branch once
v4 work begins on main. Lock the CI/release tooling to 3.x so stable
releases ship from here while main publishes v4 betas.

- tools/releaser: target 3.x for GitHub draft releases
- workflows/main: trigger on 3.x push; drop no-op canary job
- workflows/publish-prerelease: drop nightly cron; only on-demand internal builds
- workflows/post-release-templates: open template sync PRs against 3.x
- create-payload-app: default templates, examples, and skill downloads to 3.x
Sweep all documentation, README, template, example, and test source
references from the main branch to 3.x so this branch is internally
self-consistent once v4 work begins on main.

Covers:
- docs/**/*.mdx GitHub tree/blob links
- package and template README links
- source-level links in templates/, examples/, and test/live-preview
- raw.githubusercontent.com asset URLs in templates/examples
- tools/scripts/src/generate-template-variations.ts templateRepoUrlBase
- .github issue/PR templates and reproduction guides
- tools/claude-plugin skill references

Workflow-filename references to main.yml (shields.io badges) are
unrelated to branches and were intentionally left untouched.
GitHub serves PR/issue/reproduction templates from the default branch
regardless of which branch is checked out, so retargeting the links on
3.x has no effect at render time.
Same reasoning as prior revert: GitHub serves issue templates from the
default branch, so retargeting on 3.x has no render-time effect.
GitHub runs release:, schedule:, issues:, and pull_request_target:
events only from the default branch. These workflows would never fire
on 3.x, so delete them along with their exclusively-consumed custom
actions to avoid confusion about what actually runs here.

Removed workflows:
- activity-notifications, audit-dependencies (+ .sh), dispatch-event,
  label-on-change, lock-issues, post-release, post-release-templates
  (+ wait-until-package-version.sh), pr-title, stale, triage

Removed custom actions (now unused):
- actions/activity, actions/release-commenter, actions/triage

Dropped .github/pnpm-workspace.yaml + pnpm-lock.yaml since the
deleted actions were the only workspace members.

Retained: main.yml, publish-prerelease.yml, actions/setup,
actions/start-services, and the e2e/int matrix configs.
GitHub serves ISSUE_TEMPLATE/, PULL_REQUEST_TEMPLATE.md, and related
assets from the default branch regardless of which branch is checked
out, so these files are dead weight on 3.x.

Also removes comments/invalid-reproduction.md, which was consumed
only by the triage action removed in the prior commit.
Two misses from the earlier sweep:
- dependabot.yml: only read from the default branch, so dead on 3.x
  (same category as issue templates removed earlier)
- templates/{website,with-vercel-website,ecommerce}/src/endpoints/seed/
  index.ts: raw.githubusercontent.com /refs/heads/main/ URLs for seed
  images. The prior regex only covered the /main/ short form.
@github-actions

github-actions Bot commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

📦 esbuild Bundle Analysis for payload

This analysis was generated by esbuild-bundle-analyzer. 🤖

Meta File Out File Size (raw) Note
packages/next/meta_index.json esbuild/index.js 985.21 KB 🆕 Added
packages/payload/meta_index.json esbuild/index.js 1.39 MB 🆕 Added
packages/payload/meta_shared.json esbuild/exports/shared.js 191.27 KB 🆕 Added
packages/richtext-lexical/meta_client.json esbuild/exports/client_optimized/index.js 289.51 KB 🆕 Added
packages/ui/meta_client.json esbuild/exports/client_optimized/index.js 1.18 MB 🆕 Added
packages/ui/meta_shared.json esbuild/exports/shared_optimized/index.js 16.32 KB 🆕 Added
Largest paths These visualization shows top 20 largest paths in the bundle.

Meta file: packages/next/meta_index.json, Out file: esbuild/index.js

Path Size
../../node_modules ${{\color{Goldenrod}{ ████████████████████▌ }}}$ 82.4%, 807.63 KB
dist/views/Version ${{\color{Goldenrod}{ █▎ }}}$ 5.3%, 51.49 KB
dist/views/Dashboard ${{\color{Goldenrod}{ ▌ }}}$ 2.2%, 21.37 KB
dist/views/Document ${{\color{Goldenrod}{ ▍ }}}$ 1.7%, 16.59 KB
dist/views/List ${{\color{Goldenrod}{ ▎ }}}$ 1.2%, 11.38 KB
dist/views/Root ${{\color{Goldenrod}{ ▎ }}}$ 1.0%, 9.90 KB
dist/views/Versions ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 6.17 KB
dist/views/API ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 6.13 KB
dist/elements/Nav ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 5.96 KB
dist/views/Account ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 5.55 KB
dist/elements/DocumentHeader ${{\color{Goldenrod}{ ▏ }}}$ 0.5%, 4.81 KB
dist/views/Login ${{\color{Goldenrod}{ }}}$ 0.4%, 4.40 KB
dist/layouts/Root ${{\color{Goldenrod}{ }}}$ 0.3%, 3.20 KB
dist/views/ForgotPassword ${{\color{Goldenrod}{ }}}$ 0.3%, 3.13 KB
dist/views/CreateFirstUser ${{\color{Goldenrod}{ }}}$ 0.3%, 2.81 KB
dist/templates/Default ${{\color{Goldenrod}{ }}}$ 0.3%, 2.64 KB
dist/views/BrowseByFolder ${{\color{Goldenrod}{ }}}$ 0.3%, 2.61 KB
dist/views/CollectionFolders ${{\color{Goldenrod}{ }}}$ 0.2%, 2.44 KB
dist/views/ResetPassword ${{\color{Goldenrod}{ }}}$ 0.2%, 2.40 KB
dist/views/Logout ${{\color{Goldenrod}{ }}}$ 0.2%, 1.94 KB
(other) ${{\color{Goldenrod}{ ████▍ }}}$ 17.6%, 172.90 KB

Meta file: packages/payload/meta_index.json, Out file: esbuild/index.js

Path Size
../../node_modules ${{\color{Goldenrod}{ █████████████████▏ }}}$ 68.7%, 951.98 KB
dist/fields/hooks ${{\color{Goldenrod}{ ▊ }}}$ 3.2%, 44.07 KB
dist/collections/operations ${{\color{Goldenrod}{ ▋ }}}$ 2.9%, 39.96 KB
dist/versions/migrations ${{\color{Goldenrod}{ ▎ }}}$ 1.3%, 18.50 KB
dist/auth/operations ${{\color{Goldenrod}{ ▎ }}}$ 1.1%, 15.63 KB
dist/fields/config ${{\color{Goldenrod}{ ▎ }}}$ 1.0%, 14.16 KB
dist/globals/operations ${{\color{Goldenrod}{ ▎ }}}$ 1.0%, 13.32 KB
dist/utilities/configToJSONSchema.js ${{\color{Goldenrod}{ ▏ }}}$ 0.9%, 13.13 KB
dist/queues/operations ${{\color{Goldenrod}{ ▏ }}}$ 0.9%, 12.71 KB
dist/fields/validations.js ${{\color{Goldenrod}{ ▏ }}}$ 0.8%, 10.54 KB
dist/bin/generateImportMap ${{\color{Goldenrod}{ ▏ }}}$ 0.7%, 9.08 KB
dist/collections/config ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 8.91 KB
dist/config/orderable ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 8.00 KB
dist/uploads/fetchAPI-multipart ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 7.80 KB
dist/index.js ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 7.79 KB
dist/database/migrations ${{\color{Goldenrod}{ ▏ }}}$ 0.5%, 7.54 KB
dist/config/sanitize.js ${{\color{Goldenrod}{ ▏ }}}$ 0.5%, 6.26 KB
dist/collections/endpoints ${{\color{Goldenrod}{ }}}$ 0.4%, 6.23 KB
dist/auth/strategies ${{\color{Goldenrod}{ }}}$ 0.4%, 5.50 KB
dist/queues/config ${{\color{Goldenrod}{ }}}$ 0.4%, 5.31 KB
(other) ${{\color{Goldenrod}{ ███████▊ }}}$ 31.3%, 433.14 KB

Meta file: packages/payload/meta_shared.json, Out file: esbuild/exports/shared.js

Path Size
../../node_modules ${{\color{Goldenrod}{ ███████████████████▊ }}}$ 79.4%, 148.89 KB
dist/fields/validations.js ${{\color{Goldenrod}{ █▍ }}}$ 5.6%, 10.54 KB
dist/config/orderable ${{\color{Goldenrod}{ ▍ }}}$ 1.7%, 3.13 KB
dist/fields/baseFields ${{\color{Goldenrod}{ ▍ }}}$ 1.5%, 2.79 KB
dist/utilities/deepCopyObject.js ${{\color{Goldenrod}{ ▎ }}}$ 1.4%, 2.54 KB
dist/auth/cookies.js ${{\color{Goldenrod}{ ▏ }}}$ 0.8%, 1.55 KB
dist/utilities/flattenTopLevelFields.js ${{\color{Goldenrod}{ ▏ }}}$ 0.8%, 1.42 KB
dist/fields/config ${{\color{Goldenrod}{ ▏ }}}$ 0.7%, 1.28 KB
dist/utilities/getVersionsConfig.js ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 1.04 KB
dist/utilities/flattenAllFields.js ${{\color{Goldenrod}{ ▏ }}}$ 0.5%, 943 B
dist/folders/utils ${{\color{Goldenrod}{ ▏ }}}$ 0.5%, 916 B
dist/utilities/unflatten.js ${{\color{Goldenrod}{ }}}$ 0.4%, 779 B
dist/utilities/sanitizeUserDataForEmail.js ${{\color{Goldenrod}{ }}}$ 0.4%, 713 B
dist/utilities/getFieldPermissions.js ${{\color{Goldenrod}{ }}}$ 0.3%, 651 B
dist/collections/config ${{\color{Goldenrod}{ }}}$ 0.3%, 570 B
dist/bin/generateImportMap ${{\color{Goldenrod}{ }}}$ 0.3%, 561 B
dist/auth/sessions.js ${{\color{Goldenrod}{ }}}$ 0.3%, 525 B
dist/fields/getFieldPaths.js ${{\color{Goldenrod}{ }}}$ 0.3%, 485 B
dist/utilities/getSafeRedirect.js ${{\color{Goldenrod}{ }}}$ 0.2%, 423 B
dist/utilities/deepMerge.js ${{\color{Goldenrod}{ }}}$ 0.2%, 413 B
(other) ${{\color{Goldenrod}{ █████▏ }}}$ 20.6%, 38.72 KB

Meta file: packages/richtext-lexical/meta_client.json, Out file: esbuild/exports/client_optimized/index.js

Path Size
dist/features/blocks ${{\color{Goldenrod}{ ███▏ }}}$ 12.7%, 36.34 KB
dist/lexical/plugins ${{\color{Goldenrod}{ ██▊ }}}$ 11.4%, 32.65 KB
dist/lexical/ui ${{\color{Goldenrod}{ ██▏ }}}$ 8.5%, 24.36 KB
dist/features/experimental_table ${{\color{Goldenrod}{ ██ }}}$ 8.3%, 23.70 KB
dist/packages/@lexical ${{\color{Goldenrod}{ █▋ }}}$ 6.6%, 18.99 KB
dist/features/link ${{\color{Goldenrod}{ █▋ }}}$ 6.5%, 18.53 KB
dist/features/toolbars ${{\color{Goldenrod}{ █▍ }}}$ 5.6%, 16.08 KB
dist/features/upload ${{\color{Goldenrod}{ █▏ }}}$ 4.8%, 13.77 KB
dist/features/textState ${{\color{Goldenrod}{ ▉ }}}$ 3.9%, 11.08 KB
dist/features/relationship ${{\color{Goldenrod}{ ▊ }}}$ 3.2%, 9.03 KB
dist/lexical/utils ${{\color{Goldenrod}{ ▊ }}}$ 3.1%, 8.79 KB
dist/features/converters ${{\color{Goldenrod}{ ▋ }}}$ 2.9%, 8.36 KB
dist/features/debug ${{\color{Goldenrod}{ ▋ }}}$ 2.6%, 7.40 KB
dist/utilities/fieldsDrawer ${{\color{Goldenrod}{ ▋ }}}$ 2.5%, 7.15 KB
dist/lexical/config ${{\color{Goldenrod}{ ▍ }}}$ 1.8%, 5.08 KB
dist/features/lists ${{\color{Goldenrod}{ ▍ }}}$ 1.7%, 5.00 KB
dist/features/format ${{\color{Goldenrod}{ ▎ }}}$ 1.2%, 3.46 KB
dist/lexical/LexicalEditor.js ${{\color{Goldenrod}{ ▎ }}}$ 1.1%, 3.23 KB
dist/field/Field.js ${{\color{Goldenrod}{ ▎ }}}$ 1.0%, 2.80 KB
dist/lexical/nodes ${{\color{Goldenrod}{ ▏ }}}$ 0.9%, 2.66 KB
(other) ${{\color{Goldenrod}{ █████████████████████▊ }}}$ 87.3%, 249.86 KB

Meta file: packages/ui/meta_client.json, Out file: esbuild/exports/client_optimized/index.js

Path Size
../../node_modules ${{\color{Goldenrod}{ ████████████▎ }}}$ 49.3%, 579.12 KB
dist/elements/FolderView ${{\color{Goldenrod}{ ▋ }}}$ 2.5%, 29.38 KB
dist/elements/BulkUpload ${{\color{Goldenrod}{ ▌ }}}$ 2.4%, 28.24 KB
dist/elements/WhereBuilder ${{\color{Goldenrod}{ ▍ }}}$ 1.5%, 17.36 KB
dist/views/Edit ${{\color{Goldenrod}{ ▍ }}}$ 1.5%, 17.30 KB
dist/forms/Form ${{\color{Goldenrod}{ ▎ }}}$ 1.4%, 15.91 KB
dist/fields/Relationship ${{\color{Goldenrod}{ ▎ }}}$ 1.3%, 15.79 KB
dist/elements/Table ${{\color{Goldenrod}{ ▎ }}}$ 1.3%, 15.77 KB
dist/fields/Upload ${{\color{Goldenrod}{ ▎ }}}$ 1.2%, 14.22 KB
dist/fields/Blocks ${{\color{Goldenrod}{ ▎ }}}$ 1.2%, 13.90 KB
dist/elements/QueryPresets ${{\color{Goldenrod}{ ▏ }}}$ 0.9%, 10.36 KB
dist/elements/PublishButton ${{\color{Goldenrod}{ ▏ }}}$ 0.8%, 9.11 KB
dist/providers/Folders ${{\color{Goldenrod}{ ▏ }}}$ 0.7%, 8.46 KB
dist/elements/HTMLDiff ${{\color{Goldenrod}{ ▏ }}}$ 0.7%, 8.38 KB
dist/elements/ListHeader ${{\color{Goldenrod}{ ▏ }}}$ 0.7%, 8.06 KB
dist/fields/Array ${{\color{Goldenrod}{ ▏ }}}$ 0.7%, 7.73 KB
dist/views/CollectionFolder ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 7.50 KB
dist/views/List ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 7.36 KB
dist/elements/ReactSelect ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 7.33 KB
dist/elements/LivePreview ${{\color{Goldenrod}{ ▏ }}}$ 0.6%, 7.03 KB
(other) ${{\color{Goldenrod}{ ████████████▋ }}}$ 50.7%, 595.21 KB

Meta file: packages/ui/meta_shared.json, Out file: esbuild/exports/shared_optimized/index.js

Path Size
dist/graphics/Logo ${{\color{Goldenrod}{ █████ }}}$ 20.0%, 3.12 KB
../../node_modules ${{\color{Goldenrod}{ ████▎ }}}$ 17.0%, 2.65 KB
dist/graphics/Icon ${{\color{Goldenrod}{ ██▍ }}}$ 9.8%, 1.52 KB
dist/utilities/formatDocTitle ${{\color{Goldenrod}{ ██▏ }}}$ 8.5%, 1.32 KB
dist/providers/TableColumns ${{\color{Goldenrod}{ █▍ }}}$ 5.5%, 862 B
dist/utilities/groupNavItems.js ${{\color{Goldenrod}{ █▎ }}}$ 5.2%, 814 B
dist/utilities/getGlobalData.js ${{\color{Goldenrod}{ █▏ }}}$ 4.9%, 762 B
dist/utilities/api.js ${{\color{Goldenrod}{ █▏ }}}$ 4.8%, 756 B
dist/elements/Translation ${{\color{Goldenrod}{ ▊ }}}$ 3.2%, 493 B
dist/utilities/handleTakeOver.js ${{\color{Goldenrod}{ ▋ }}}$ 2.8%, 440 B
dist/utilities/traverseForLocalizedFields.js ${{\color{Goldenrod}{ ▋ }}}$ 2.6%, 399 B
dist/elements/withMergedProps ${{\color{Goldenrod}{ ▌ }}}$ 2.2%, 339 B
dist/utilities/getVisibleEntities.js ${{\color{Goldenrod}{ ▌ }}}$ 2.1%, 329 B
dist/utilities/getNavGroups.js ${{\color{Goldenrod}{ ▍ }}}$ 1.9%, 301 B
dist/elements/WithServerSideProps ${{\color{Goldenrod}{ ▍ }}}$ 1.5%, 232 B
dist/utilities/handleGoBack.js ${{\color{Goldenrod}{ ▎ }}}$ 1.2%, 180 B
dist/fields/mergeFieldStyles.js ${{\color{Goldenrod}{ ▎ }}}$ 1.0%, 159 B
dist/utilities/handleBackToDashboard.js ${{\color{Goldenrod}{ ▎ }}}$ 1.0%, 152 B
dist/forms/Form ${{\color{Goldenrod}{ ▏ }}}$ 0.9%, 147 B
dist/utilities/abortAndIgnore.js ${{\color{Goldenrod}{ ▏ }}}$ 0.9%, 146 B
(other) ${{\color{Goldenrod}{ ████████████████████ }}}$ 80.0%, 12.51 KB
Details

Next to the size is how much the size has increased or decreased compared with the base branch of this PR.

  • ‼️: Size increased by 20% or more. Special attention should be given to this.
  • ⚠️: Size increased in acceptable range (lower than 20%).
  • ✅: No change or even downsized.
  • 🗑️: The out file is deleted: not found in base branch.
  • 🆕: The out file is newly found: will be added to base branch.

@denolfe denolfe changed the title ci: adapt 3.x branch for v3 maintenance role ci: adjust 3.x branch references Apr 22, 2026
denolfe added 2 commits April 23, 2026 09:53
Two main-branch refs the earlier sweep didn't catch:
- templates/website/README.md: the one-click-deploy link added in
  5a39afc landed on origin/3.x and was picked up by the rebase.
- templates/with-vercel-website/README.md: the Vercel deploy-button
  URL is hand-maintained (the generator sets skipReadme: true for
  this variation) and uses URL-encoded slashes, which the prior
  regex did not match.
Output of `pnpm script:gen-templates` against current workspace
versions (3.84.0). Updates template package.json deps, regenerates
importMap.js files, and refreshes the timestamped initial migrations
for with-postgres, with-vercel-postgres, and with-vercel-website.

@DanRibbens DanRibbens 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.

This looks good for the templates and docs to continue to work.
The sequencing for the branch change happening before this means it is safe to remove the files removed.
I spot checked links, nothing is broken.

@denolfe denolfe merged commit b6131f7 into 3.x Apr 23, 2026
163 of 167 checks passed
@denolfe denolfe deleted the ci/v3-scripts branch April 23, 2026 14:27
denolfe added a commit that referenced this pull request May 26, 2026
# Overview

Restores release notifications (PR/issue comments, website dispatch,
Discord announcement) for Payload v3.x releases.

## Key Changes

- **Port `post-release` workflow and `release-commenter` action to
`3.x`**
- Adds `.github/workflows/post-release.yml` and
`.github/actions/release-commenter/` from `main`.
- GitHub Actions resolves `release` event workflows from the release's
`target_commitish` branch, not the repo default. Since v3.84.1, releases
set `target_commitish: 3.x`, where neither file existed, so no workflow
runs were queued.

- **Differences vs. the version previously on `3.x` (removed in
#16358)**
  - `release-commenter` action: identical.
- `post-release.yml`: adds the `dispatch-to-website` job (sends
`repository_dispatch` to `payloadcms/website`) and pins the Discord
action to a SHA. Reviewers should confirm `dispatch-to-website` is
desired for 3.x releases; if the website only expects events from
`main`/v4, that job should be dropped before merging.

## Design Decisions

Chose to reinstate original workflow.

Drift risk: future edits to `post-release.yml` on `main` must be
mirrored to `3.x`.

## Overall Flow

```mermaid
sequenceDiagram
    participant Releaser as tools/releaser
    participant GH as GitHub
    participant WF as post-release.yml (3.x)
    participant Site as payloadcms/website
    participant Discord

    Releaser->>GH: Publish release (target_commitish=3.x)
    GH->>WF: Trigger release:published from 3.x branch
    WF->>GH: Comment on linked PRs/issues (release-commenter)
    WF->>Site: repository_dispatch payload-release-event
    WF->>Discord: Post to releases + general channels
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants