Compare commits

..
37 Commits
Author SHA1 Message Date
Matt TraviandGitHub 58e21774cb next major (#3111) 2024-01-12 15:55:05 -06:00
Matt Travi 8066b7fd54 Merge branch 'master' of github.com:semantic-release/semantic-release into beta 2024-01-12 13:21:47 -06:00
f31d43c429 ci(action): update github/codeql-action action to v3.23.0 (#3136)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-08 17:34:06 +00:00
13f980149a chore(deps): lock file maintenance (#3134)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-08 01:54:31 +00:00
020ea7d7d5 fix: use one note reference per tag to prevent conflicts (#2085)
Co-authored-by: Matt Travi <126441+travi@users.noreply.github.com>
2024-01-05 14:51:59 -06:00
6d2a6f1aa6 fix(deps): update dependency marked to v11 (#3079)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Matt Travi <programmer@travi.org>
2024-01-05 14:27:04 -06:00
Matt TraviandGitHub ce580be16d Merge branch 'master' into beta 2024-01-05 13:48:05 -06:00
d4b7c9a23d chore(deps): update dependency c8 to v9 (#3128)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-05 19:47:05 +00:00
Matt Travi 7983c57300 ci(renovate): fixed reference to the org-level config 2024-01-01 15:06:05 -06:00
50ad70f229 chore(deps): lock file maintenance (#3126)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-01 06:18:39 +00:00
90513bbc0a chore(deps): update dependency publint to v0.2.7 (#3122)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-28 04:53:48 +00:00
b07ddfaaf9 chore(deps): update dependency dockerode to v4.0.2 (#3124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-28 02:10:29 +00:00
acd6f05dad ci(action): update github/codeql-action action to v3.22.12 (#3120)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-25 16:13:16 +00:00
5a7fa82309 chore(deps): update dependency dockerode to v4.0.1 (#3121)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-25 03:38:41 +00:00
81346ff687 chore(deps): lock file maintenance (#3123)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-25 01:45:52 +00:00
a8e0d6d611 chore(deps): update dependency p-retry to v6.2.0 (#3118)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-20 21:33:41 +00:00
Matt Travi afc7518c50 docs: fixed links
fixes #3114
2023-12-18 22:11:31 -06:00
ee110291b2 ci(action): update actions/upload-artifact action to v4 (#3109)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 15:58:43 +00:00
f021f25ad2 ci(action): update actions/setup-node action to v4.0.1 (#3116)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 12:24:28 +00:00
fd2c179131 chore(deps): lock file maintenance (#3115)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 00:37:23 +00:00
Matt Travi ad8f5b2608 docs(node-versions): updated the minimum documented node version in the node requirement doc
relates to https://github.com/semantic-release/semantic-release/issues/3106
2023-12-16 22:32:03 -06:00
Matt Travi 0d0ed9d08a fix(deps): upgraded to the latest version of env-ci
BREAKING CHANGE: woodpecker ci users need to upgrade to v1.0.0 or higher to remain supported. see
https://github.com/semantic-release/env-ci/releases/tag/v11.0.0 for more information
2023-12-16 10:12:05 -06:00
Matt Travi 2904832967 feat(node-versions): dropped support for node v18 and raised the minimum for v20
reasoning for the chosen version:
https://github.com/semantic-release/gitlab/pull/647#discussion_r1423131205

BREAKING CHANGE: support for node v18 has been dropped and the minimum for v20 is now v20.8.1

related to https://github.com/semantic-release/semantic-release/discussions/3088
2023-12-15 17:01:50 -06:00
Matt Travi abf8ddd978 ci(verify): avoid uncancellable workflow
https://github.com/semantic-release/.github/issues/19#issuecomment-1800963916

for semantic-release/.github#19
2023-12-15 16:47:07 -06:00
renovate[bot]andGitHub 07dde042bb fix(deps): update dependency cosmiconfig to v9 (#3105)
BREAKING CHANGE: if using `release.config.js` as the name of your config file, it needs to be moved to a `.config/` directory. see https://github.com/cosmiconfig/cosmiconfig/releases/tag/v9.0.0 for more detail
2023-12-15 16:27:25 -06:00
2557e9e8f1 ci(action): update github/codeql-action action to v3 (#3108)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-13 20:06:10 +00:00
786b48f886 ci(action): update github/codeql-action action to v2.22.10 (#3107)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-12 19:50:05 +00:00
Gregor MartynusandGitHub f6f1bf167c fix: Revert "fix(deps): update dependency cosmiconfig to v9" (#3104)
This reverts commit b38cd2e44e.
2023-12-11 20:28:12 -08:00
b38cd2e44e fix(deps): update dependency cosmiconfig to v9
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 15:04:52 -08:00
3722204510 chore(deps): lock file maintenance (#3101)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 18:25:02 +00:00
1fd1ce85eb chore(deps): update dependency prettier to v3.1.1 (#3099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-10 09:29:39 +00:00
Matt TraviandGitHub 00e7ca8d2e docs(getting-started): fix rendering through gitbook 2023-12-09 16:31:45 -06:00
Matt TraviandGitHub 9912d34b8d docs(cli): stop recommending setup with the cli (#3098)
since we have not been keeping up with maintenance of the cli and it has known problems that are
likely to cause more pain than it is helpful
2023-12-09 12:38:45 -08:00
f72e493d69 ci(action): update github/codeql-action action to v2.22.9 (#3094)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 13:03:33 +00:00
e8d3b2eede chore(deps): update dependency ava to v6.0.1 (#3092)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 01:46:18 +00:00
Matt Travi 88efeadac9 fix: revert updating cosmiconfig to v9 2023-12-05 23:17:13 -06:00
Matt TraviandGitHub 3a2acce01f Revert "fix(deps): update dependency cosmiconfig to v9" (#3090) 2023-12-05 23:06:46 -06:00
13 changed files with 634 additions and 783 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
- uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
with:
cache: npm
node-version: lts/*
+2 -2
View File
@@ -25,12 +25,12 @@ jobs:
results_format: sarif
publish_results: true
- name: Upload artifact
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0
with:
name: SARIF file
path: results.sarif
retention-days: 5
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8
uses: github/codeql-action/upload-sarif@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0
with:
sarif_file: results.sarif
+5 -5
View File
@@ -25,9 +25,9 @@ jobs:
strategy:
matrix:
node-version:
- 18.17.0
- 20.6.1
- 20.8.1
- 20
- 21
runs-on: ubuntu-latest
timeout-minutes: 5
@@ -37,7 +37,7 @@ jobs:
- run: git config --global user.name github-actions
- run: git config --global user.email github-actions@github.com
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
with:
node-version: ${{ matrix.node-version }}
cache: npm
@@ -55,7 +55,7 @@ jobs:
- run: git config --global user.name github-actions
- run: git config --global user.email github-actions@github.com
- name: Use Node.js from .nvmrc
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
with:
node-version-file: .nvmrc
cache: npm
@@ -70,7 +70,7 @@ jobs:
needs:
- test_dev
- test_matrix
if: always()
if: ${{ !cancelled() }}
steps:
- name: All matrix versions passed
if: ${{ !(contains(needs.*.result, 'failure')) }}
+3 -3
View File
@@ -110,9 +110,9 @@ In order to use **semantic-release** you need:
## Documentation
- Usage
- [Getting started](docs/usage/getting-started.md#getting-started)
- [Installation](docs/usage/installation.md#installation)
- [CI Configuration](docs/usage/ci-configuration.md#ci-configuration)
- [Getting started](docs/usage/getting-started.md)
- [Installation](docs/usage/installation.md)
- [CI Configuration](docs/usage/ci-configuration.md)
- [Configuration](docs/usage/configuration.md#configuration)
- [Plugins](docs/usage/plugins.md)
- [Workflow configuration](docs/usage/workflow-configuration.md)
+1 -1
View File
@@ -2,7 +2,7 @@
## Usage
- [Getting started](docs/usage/getting-started.md#getting-started)
- [Getting started](docs/usage/getting-started.md)
- [Installation](docs/usage/installation.md)
- [CI Configuration](docs/usage/ci-configuration.md)
- [Configuration](docs/usage/configuration.md)
+1 -1
View File
@@ -1,6 +1,6 @@
# Node version requirement
**semantic-release** is written using the latest [ECMAScript 2017](https://www.ecma-international.org/publications/standards/Ecma-262.htm) features, without transpilation which **requires Node version 18.0.0 or higher**.
**semantic-release** is written using the latest [ECMAScript 2017](https://www.ecma-international.org/publications/standards/Ecma-262.htm) features, without transpilation which **requires Node version 20.8.1 or higher**.
**semantic-release** is meant to be used in a CI environment as a development support tool, not as a production dependency.
Therefore, the only constraint is to run the `semantic-release` in a CI environment providing version of Node that meets our version requirement.
-13
View File
@@ -6,16 +6,3 @@ In order to use **semantic-release** you must follow these steps:
2. Configure your Continuous Integration service to [run **semantic-release**](./ci-configuration.md#run-semantic-release-only-after-all-tests-succeeded)
3. Configure your Git repository and package manager repository [authentication](ci-configuration.md#authentication) in your Continuous Integration service
4. Configure **semantic-release** [options and plugins](./configuration.md#configuration)
Alternatively those steps can be easily done with the [**semantic-release** interactive CLI](https://github.com/semantic-release/cli):
```bash
cd your-module
npx semantic-release-cli setup
```
![dialogue](../../media/semantic-release-cli.png)
See the [semantic-release-cli](https://github.com/semantic-release/cli#what-it-does) documentation for more details.
**Note**: only a limited number of options, CI services and plugins are currently supported by `semantic-release-cli`.
+7 -4
View File
@@ -123,12 +123,15 @@ async function run(context, plugins) {
if (options.dryRun) {
logger.warn(`Skip ${nextRelease.gitTag} tag creation in dry-run mode`);
} else {
await addNote({ channels: [...currentRelease.channels, nextRelease.channel] }, nextRelease.gitHead, {
await addNote({ channels: [...currentRelease.channels, nextRelease.channel] }, nextRelease.gitTag, {
cwd,
env,
});
await push(options.repositoryUrl, { cwd, env });
await pushNotes(options.repositoryUrl, { cwd, env });
await pushNotes(options.repositoryUrl, nextRelease.gitTag, {
cwd,
env,
});
logger.success(
`Add ${nextRelease.channel ? `channel ${nextRelease.channel}` : "default channel"} to tag ${
nextRelease.gitTag
@@ -203,9 +206,9 @@ async function run(context, plugins) {
} else {
// Create the tag before calling the publish plugins as some require the tag to exists
await tag(nextRelease.gitTag, nextRelease.gitHead, { cwd, env });
await addNote({ channels: [nextRelease.channel] }, nextRelease.gitHead, { cwd, env });
await addNote({ channels: [nextRelease.channel] }, nextRelease.gitTag, { cwd, env });
await push(options.repositoryUrl, { cwd, env });
await pushNotes(options.repositoryUrl, { cwd, env });
await pushNotes(options.repositoryUrl, nextRelease.gitTag, { cwd, env });
logger.success(`Created tag ${nextRelease.gitTag}`);
}
+39 -10
View File
@@ -2,6 +2,7 @@ import gitLogParser from "git-log-parser";
import getStream from "get-stream";
import { execa } from "execa";
import debugGit from "debug";
import { merge } from "lodash-es";
import { GIT_NOTE_REF } from "./definitions/constants.js";
const debug = debugGit("semantic-release:git");
@@ -141,13 +142,9 @@ export async function fetch(repositoryUrl, branch, ciBranch, execaOptions) {
*/
export async function fetchNotes(repositoryUrl, execaOptions) {
try {
await execa(
"git",
["fetch", "--unshallow", repositoryUrl, `+refs/notes/${GIT_NOTE_REF}:refs/notes/${GIT_NOTE_REF}`],
execaOptions
);
await execa("git", ["fetch", "--unshallow", repositoryUrl, `+refs/notes/*:refs/notes/*`], execaOptions);
} catch {
await execa("git", ["fetch", repositoryUrl, `+refs/notes/${GIT_NOTE_REF}:refs/notes/${GIT_NOTE_REF}`], {
await execa("git", ["fetch", repositoryUrl, `+refs/notes/*:refs/notes/*`], {
...execaOptions,
reject: false,
});
@@ -246,8 +243,8 @@ export async function push(repositoryUrl, execaOptions) {
*
* @throws {Error} if the push failed.
*/
export async function pushNotes(repositoryUrl, execaOptions) {
await execa("git", ["push", repositoryUrl, `refs/notes/${GIT_NOTE_REF}`], execaOptions);
export async function pushNotes(repositoryUrl, ref, execaOptions) {
await execa("git", ["push", repositoryUrl, `refs/notes/${GIT_NOTE_REF}-${ref}`], execaOptions);
}
/**
@@ -307,8 +304,26 @@ export async function isBranchUpToDate(repositoryUrl, branch, execaOptions) {
* @return {Object} the parsed JSON note if there is one, an empty object otherwise.
*/
export async function getNote(ref, execaOptions) {
const handleError = (error) => {
if (error.exitCode === 1) {
return { stdout: "{}" };
}
debug(error);
throw error;
};
try {
return JSON.parse((await execa("git", ["notes", "--ref", GIT_NOTE_REF, "show", ref], execaOptions)).stdout);
return merge(
JSON.parse(
// Used for retro-compatibility
(await execa("git", ["notes", "--ref", GIT_NOTE_REF, "show", ref], execaOptions).catch(handleError)).stdout
),
JSON.parse(
(await execa("git", ["notes", "--ref", `${GIT_NOTE_REF}-${ref}`, "show", ref], execaOptions).catch(handleError))
.stdout
)
);
} catch (error) {
if (error.exitCode === 1) {
return {};
@@ -327,5 +342,19 @@ export async function getNote(ref, execaOptions) {
* @param {Object} [execaOpts] Options to pass to `execa`.
*/
export async function addNote(note, ref, execaOptions) {
await execa("git", ["notes", "--ref", GIT_NOTE_REF, "add", "-f", "-m", JSON.stringify(note), ref], execaOptions);
await execa(
"git",
["notes", "--ref", `${GIT_NOTE_REF}-${ref}`, "add", "-f", "-m", JSON.stringify(note), ref],
execaOptions
);
}
/**
* Get the reference of a tag
*
* @param {String} tag The tag name to get the reference of.
* @param {Object} [execaOpts] Options to pass to `execa`.
**/
export async function getTagRef(tag, execaOptions) {
return (await execa("git", ["show-ref", tag, "--hash"], execaOptions)).stdout;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

+563 -731
View File
File diff suppressed because it is too large Load Diff
+10 -10
View File
@@ -35,7 +35,7 @@
"aggregate-error": "^5.0.0",
"cosmiconfig": "^9.0.0",
"debug": "^4.0.0",
"env-ci": "^10.0.0",
"env-ci": "^11.0.0",
"execa": "^8.0.0",
"figures": "^6.0.0",
"find-versions": "^5.1.0",
@@ -45,7 +45,7 @@
"hosted-git-info": "^7.0.0",
"import-from-esm": "^1.3.1",
"lodash-es": "^4.17.21",
"marked": "^9.0.0",
"marked": "^11.0.0",
"marked-terminal": "^6.0.0",
"micromatch": "^4.0.2",
"p-each-series": "^3.0.0",
@@ -58,12 +58,12 @@
"yargs": "^17.5.1"
},
"devDependencies": {
"ava": "6.0.0",
"c8": "8.0.1",
"ava": "6.0.1",
"c8": "9.0.0",
"clear-module": "4.1.2",
"codecov": "3.8.3",
"cz-conventional-changelog": "3.3.0",
"dockerode": "4.0.0",
"dockerode": "4.0.2",
"file-url": "4.0.0",
"fs-extra": "11.2.0",
"got": "14.0.0",
@@ -73,16 +73,16 @@
"mockserver-client": "5.15.0",
"nock": "13.4.0",
"npm-run-all2": "6.1.1",
"p-retry": "6.1.0",
"prettier": "3.1.0",
"publint": "0.2.6",
"p-retry": "6.2.0",
"prettier": "3.1.1",
"publint": "0.2.7",
"sinon": "17.0.1",
"stream-buffers": "3.0.2",
"tempy": "3.1.0",
"testdouble": "3.20.1"
},
"engines": {
"node": "^18.17 || >=20.6.1"
"node": ">=20.8.1"
},
"files": [
"bin",
@@ -159,7 +159,7 @@
},
"renovate": {
"extends": [
"github>semantic-release/.github"
"github>semantic-release/.github:renovate-config"
]
}
}
+2 -2
View File
@@ -315,7 +315,7 @@ export async function rebase(ref, execaOptions) {
* @param {Object} [execaOpts] Options to pass to `execa`.
*/
export async function gitAddNote(note, ref, execaOptions) {
await execa("git", ["notes", "--ref", GIT_NOTE_REF, "add", "-m", note, ref], execaOptions);
await execa("git", ["notes", "--ref", `${GIT_NOTE_REF}-${ref}`, "add", "-m", note, ref], execaOptions);
}
/**
@@ -325,5 +325,5 @@ export async function gitAddNote(note, ref, execaOptions) {
* @param {Object} [execaOpts] Options to pass to `execa`.
*/
export async function gitGetNote(ref, execaOptions) {
return (await execa("git", ["notes", "--ref", GIT_NOTE_REF, "show", ref], execaOptions)).stdout;
return (await execa("git", ["notes", "--ref", `${GIT_NOTE_REF}-${ref}`, "show", ref], execaOptions)).stdout;
}