You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR revamps the GitHub Actions recipe page to be more
action-oriented, easier to scan, and aligned with current
semantic-release security guidance.
### Notable Changes
- Reworked the page flow to be execution-first:
1. Quick start at the top
2. Clear publishing path selection
3. Minimal Node workflow users can copy and run
4. Deeper context and edge cases afterward
- Improved navigation with direct links from quick start to relevant
sections.
- Added a practical pitfalls checklist and a release readiness
checklist.
- Modernized guidance around publishing/auth:
1. Prioritizes trusted publishing (OIDC) and npm provenance
2. Clarifies token behavior and setup expectations
- Updated the commit-during-release guidance:
1. Recommends GitHub App authentication as the preferred approach
2. Adds a minimal GitHub App token example
3. Explicitly discourages PAT usage due to security risk
- Added guidance that the workflow snippet represents a simple/default
release flow and points users to the Running semantic-release docs for
alternate invocation patterns and non-default setups.
## Screenshot/Screencast
[screen-capture
(68).webm](https://github.com/user-attachments/assets/f676ef37-6223-4305-bbf3-c748e42cbc72)
---------
Co-authored-by: Matt Travi <126441+travi@users.noreply.github.com>
Copy file name to clipboardExpand all lines: src/content/docs/foundation/considerations.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ title: Considerations
12
12
13
13
If your primary attraction is for automatic release note generation rather than semantic versioning, you may want to reconsider if **semantic-release** is the right fit for your goals.
14
14
15
-
:::tip[Recommendation]
15
+
:::tip[Recommendation]
16
16
Adopt **semantic-release** when semantic versioning is your primary objective, with release-step automation as a secondary benefit.
17
17
:::
18
18
@@ -29,7 +29,7 @@ Applications that are deployed directly to a runtime environment lack an audienc
29
29
Docker images that are published to a registry only for the purpose of deploying directly to a runtime environment fall into this category, even though they are a published asset.
30
30
Often, using the git SHA as the version for such assets is a better choice than versioning them semantically.
31
31
32
-
:::tip[Recommendation]
32
+
:::tip[Recommendation]
33
33
Prioritize semantic versioning for artifacts consumed as dependencies; for directly deployed artifacts, consider using git SHAs instead.
34
34
:::
35
35
@@ -43,7 +43,7 @@ and [making commits during the release process adds significant complexity](/sup
43
43
44
44
Please consider the trade-offs of adding those plugins to your release configuration for potentially unnecessary goals.
45
45
46
-
:::tip[Recommendation]
46
+
:::tip[Recommendation]
47
47
Keep your configuration minimal and only add release-time commits when there is a clear, justified need.
|`verifyConditions`| Verify Conditions | No | Verify conditions necessary to proceed with the release: configuration is correct, authentication tokens are valid, and so on. |
14
-
|`analyzeCommits`| Analyze Commits | Yes | Determine the type of the next release (`major`, `minor`, or `patch`). This hook is required to decide the next release type. If multiple plugins implement `analyzeCommits`, the highest release type returned wins. |
15
-
|`verifyRelease`| Verify Release | No | Verify the parameters of the release that is about to be published, such as version, type, or distribution tag. |
16
-
|`generateNotes`| Generate Notes | No | Generate the content of the release note. If multiple plugins implement `generateNotes`, the release notes will be the concatenation of each plugin output. |
17
-
|`prepare`| Prepare | No | Prepare the release, for example by creating or updating files such as `package.json`, `CHANGELOG.md`, documentation, or compiled assets and pushing a commit. |
18
-
|`publish`| Publish | No | Publish the release. |
19
-
|`addChannel`| Add Channel (optional) | No | Assign the release to a distribution channel when channel management is needed, for example by adding an npm dist-tag. |
20
-
|`success`| Notify | No | Notify consumers or maintainers after a successful release. |
21
-
|`fail`| Notify | No | Notify consumers or maintainers after a failed release. |
|`verifyConditions`| Verify Conditions | No | Verify conditions necessary to proceed with the release: configuration is correct, authentication tokens are valid, and so on.|
14
+
|`analyzeCommits`| Analyze Commits | Yes | Determine the type of the next release (`major`, `minor`, or `patch`). This hook is required to decide the next release type. If multiple plugins implement `analyzeCommits`, the highest release type returned wins. |
15
+
|`verifyRelease`| Verify Release | No | Verify the parameters of the release that is about to be published, such as version, type, or distribution tag.|
16
+
|`generateNotes`| Generate Notes | No | Generate the content of the release note. If multiple plugins implement `generateNotes`, the release notes will be the concatenation of each plugin output.|
17
+
|`prepare`| Prepare | No | Prepare the release, for example by creating or updating files such as `package.json`, `CHANGELOG.md`, documentation, or compiled assets and pushing a commit.|
18
+
|`publish`| Publish | No | Publish the release.|
19
+
|`addChannel`| Add Channel (optional) | No | Assign the release to a distribution channel when channel management is needed, for example by adding an npm dist-tag. |
20
+
|`success`| Notify | No | Notify consumers or maintainers after a successful release.|
21
+
|`fail`| Notify | No | Notify consumers or maintainers after a failed release.|
22
22
23
23
For each [release step](/foundation/steps/), **semantic-release** runs every plugin in the [`plugins` array](plugins.md#plugins-declaration-and-execution-order) that implements the hook for that step.
GitHub Flow is a practical fit when pull requests are short-lived and releases are frequent.
49
49
:::
50
50
@@ -73,15 +73,15 @@ While the [same reflection](https://nvie.com/posts/a-successful-git-branching-mo
73
73
While some have found that the [Pre-release workflow](/foundation/workflow-configuration/#prerelease) enabled by **semantic-release** can be used to _simulate_ a git-flow-like workflow,
74
74
it is also worth noting that this orchestration pattern is not an intended use case and requests for support when attempting to use it that way will be closed by our team.
75
75
76
-
:::tip[Recommendation]
76
+
:::tip[Recommendation]
77
77
Avoid Git flow-style long-lived branch orchestration when using **semantic-release**.
78
78
:::
79
79
80
80
### Workflows that Release for Testing Before Promotion to a Stable Release
81
81
82
82
-[The Importance of a Local Build](https://trunkbaseddevelopment.com/styles/#the-importance-of-a-local-build)
83
83
84
-
:::tip[Recommendation]
84
+
:::tip[Recommendation]
85
85
Prefer workflows where confidence comes from CI quality signals, with production release as the promotion event.
|`name`| All |**Required.** The Git branch holding the commits to analyze and the code to release. See [name](#name). | - The value itself if defined as a `String` or the matching branches name if defined as a glob. |
29
-
|`channel`| All | The distribution channel on which to publish releases from this branch. Set to `false` to force the default distribution channel instead of using the default. See [channel](#channel). |`undefined` for the first release branch, the value of `name` for subsequent ones. |
26
+
| Property | Branch type | Description | Default |
|`name`| All |**Required.** The Git branch holding the commits to analyze and the code to release. See [name](#name). | - The value itself if defined as a `String` or the matching branches name if defined as a glob. |
29
+
|`channel`| All | The distribution channel on which to publish releases from this branch. Set to `false` to force the default distribution channel instead of using the default. See [channel](#channel). |`undefined` for the first release branch, the value of `name` for subsequent ones. |
30
30
|`range`|[maintenance](#maintenance-branches) only |**Required unless `name` is formatted like `N.N.x` or `N.x` (`N` is a number).** The range of [semantic versions](https://semver.org) to support on this branch. See [range](#range). | The value of `name`. |
31
31
|`prerelease`|[pre-release](#pre-release-branches) only |**Required.** The pre-release denotation to append to [semantic versions](https://semver.org) released from this branch. See [prerelease](#prerelease). | - |
0 commit comments