Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b38cd2e44e | ||
|
|
3722204510 | ||
|
|
1fd1ce85eb | ||
|
|
00e7ca8d2e | ||
|
|
9912d34b8d | ||
|
|
f72e493d69 | ||
|
|
e8d3b2eede | ||
|
|
88efeadac9 | ||
|
|
3a2acce01f | ||
|
|
8b0dbd2805 | ||
|
|
5aa56da694 | ||
|
|
c516d59bf0 | ||
|
|
67995485c3 | ||
|
|
14a5755ef1 | ||
|
|
f6fb0fc130 | ||
|
|
5ca3d78c63 | ||
|
|
cac1dbb121 | ||
|
|
29aefa4b87 | ||
|
|
3d8c7154b2 | ||
|
|
ea446a4ea4 | ||
|
|
0d06f62411 | ||
|
|
26df1d2aa1 | ||
|
|
b3a87bfa8f | ||
|
|
b36036e920 | ||
|
|
c084008274 | ||
|
|
9fd162b3bc | ||
|
|
c129474e93 | ||
|
|
02f2cb1c8b | ||
|
|
b1683a7b4d |
@@ -31,6 +31,6 @@ jobs:
|
||||
path: results.sarif
|
||||
retention-days: 5
|
||||
- name: Upload to code-scanning
|
||||
uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5
|
||||
uses: github/codeql-action/upload-sarif@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
@@ -69,7 +69,7 @@ The table below shows which commit message gets you which release type when `sem
|
||||
### Automation with CI
|
||||
|
||||
**semantic-release** is meant to be executed on the CI environment after every successful build on the release branch.
|
||||
This way no human is directly involved in the release process and the releases are guaranteed to be [unromantic and unsentimental](http://sentimentalversioning.org).
|
||||
This way no human is directly involved in the release process and the releases are guaranteed to be [unromantic and unsentimental](https://github.com/dominictarr/sentimental-versioning#readme).
|
||||
|
||||
### Triggering a release
|
||||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||

|
||||
|
||||
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`.
|
||||
|
||||
@@ -60,7 +60,7 @@ export function release({ release }) {
|
||||
return release;
|
||||
}
|
||||
|
||||
// The intial lastVersion is the last release from the base branch of `FIRST_RELEASE` (1.0.0)
|
||||
// The initial lastVersion is the last release from the base branch of `FIRST_RELEASE` (1.0.0)
|
||||
let lastVersion = getLatestVersion(tagsToVersions(release[0].tags)) || FIRST_RELEASE;
|
||||
|
||||
return release.map(({ name, tags, channel, ...rest }, idx) => {
|
||||
|
||||
+3
-13
@@ -1,10 +1,10 @@
|
||||
import { dirname, extname } from "node:path";
|
||||
import { dirname } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
import { castArray, isNil, isPlainObject, isString, pickBy } from "lodash-es";
|
||||
import { readPackageUp } from "read-pkg-up";
|
||||
import { cosmiconfig } from "cosmiconfig";
|
||||
import resolveFrom from "resolve-from";
|
||||
import importFrom from "import-from-esm";
|
||||
import debugConfig from "debug";
|
||||
import { repoUrl } from "./git.js";
|
||||
import PLUGINS_DEFINITIONS from "./definitions/plugins.js";
|
||||
@@ -33,17 +33,7 @@ export default async (context, cliOptions) => {
|
||||
options = {
|
||||
...(await castArray(extendPaths).reduce(async (eventualResult, extendPath) => {
|
||||
const result = await eventualResult;
|
||||
const resolvedPath = resolveFrom.silent(__dirname, extendPath) || resolveFrom(cwd, extendPath);
|
||||
const importAssertions =
|
||||
extname(resolvedPath) === ".json"
|
||||
? {
|
||||
assert: {
|
||||
type: "json",
|
||||
},
|
||||
}
|
||||
: undefined;
|
||||
|
||||
const { default: extendsOptions } = await import(resolvedPath, importAssertions);
|
||||
const extendsOptions = (await importFrom.silent(__dirname, extendPath)) || (await importFrom(cwd, extendPath));
|
||||
|
||||
// For each plugin defined in a shareable config, save in `pluginsPath` the extendable config path,
|
||||
// so those plugin will be loaded relative to the config file
|
||||
|
||||
@@ -36,7 +36,7 @@ function formatAuthUrl(protocol, repositoryUrl, gitCredentials) {
|
||||
* @param {Object} context semantic-release context.
|
||||
* @param {String} authUrl Repository URL to verify
|
||||
*
|
||||
* @return {String} The authUrl as is if the connection was successfull, null otherwise
|
||||
* @return {String} The authUrl as is if the connection was successful, null otherwise
|
||||
*/
|
||||
async function ensureValidAuthUrl({ cwd, env, branch }, authUrl) {
|
||||
try {
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 65 KiB |
Generated
+1294
-1314
File diff suppressed because it is too large
Load Diff
+10
-9
@@ -33,7 +33,7 @@
|
||||
"@semantic-release/npm": "^11.0.0",
|
||||
"@semantic-release/release-notes-generator": "^12.0.0",
|
||||
"aggregate-error": "^5.0.0",
|
||||
"cosmiconfig": "^8.0.0",
|
||||
"cosmiconfig": "^9.0.0",
|
||||
"debug": "^4.0.0",
|
||||
"env-ci": "^10.0.0",
|
||||
"execa": "^8.0.0",
|
||||
@@ -43,6 +43,7 @@
|
||||
"git-log-parser": "^1.2.0",
|
||||
"hook-std": "^3.0.0",
|
||||
"hosted-git-info": "^7.0.0",
|
||||
"import-from-esm": "^1.3.1",
|
||||
"lodash-es": "^4.17.21",
|
||||
"marked": "^9.0.0",
|
||||
"marked-terminal": "^6.0.0",
|
||||
@@ -57,28 +58,28 @@
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "5.3.1",
|
||||
"ava": "6.0.1",
|
||||
"c8": "8.0.1",
|
||||
"clear-module": "4.1.2",
|
||||
"codecov": "3.8.3",
|
||||
"cz-conventional-changelog": "3.3.0",
|
||||
"dockerode": "4.0.0",
|
||||
"file-url": "4.0.0",
|
||||
"fs-extra": "11.1.1",
|
||||
"got": "13.0.0",
|
||||
"fs-extra": "11.2.0",
|
||||
"got": "14.0.0",
|
||||
"js-yaml": "4.1.0",
|
||||
"lockfile-lint": "4.12.1",
|
||||
"ls-engines": "0.9.0",
|
||||
"ls-engines": "0.9.1",
|
||||
"mockserver-client": "5.15.0",
|
||||
"nock": "13.3.8",
|
||||
"nock": "13.4.0",
|
||||
"npm-run-all2": "6.1.1",
|
||||
"p-retry": "6.1.0",
|
||||
"prettier": "3.0.3",
|
||||
"publint": "0.2.5",
|
||||
"prettier": "3.1.1",
|
||||
"publint": "0.2.6",
|
||||
"sinon": "17.0.1",
|
||||
"stream-buffers": "3.0.2",
|
||||
"tempy": "3.1.0",
|
||||
"testdouble": "3.20.0"
|
||||
"testdouble": "3.20.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.17 || >=20.6.1"
|
||||
|
||||
@@ -98,7 +98,7 @@ export async function gitCommits(messages, execaOptions) {
|
||||
/**
|
||||
* Get the list of parsed commits since a git reference.
|
||||
*
|
||||
* @param {String} [from] Git reference from which to seach commits.
|
||||
* @param {String} [from] Git reference from which to search commits.
|
||||
* @param {Object} [execaOpts] Options to pass to `execa`.
|
||||
*
|
||||
* @return {Array<Object>} The list of parsed commits.
|
||||
@@ -240,7 +240,7 @@ export async function gitTagHead(tagName, execaOptions) {
|
||||
* Get the first commit sha referenced by the tag `tagName` in the remote repository.
|
||||
*
|
||||
* @param {String} repositoryUrl The repository remote URL.
|
||||
* @param {String} tagName The tag name to seach for.
|
||||
* @param {String} tagName The tag name to search for.
|
||||
* @param {Object} [execaOpts] Options to pass to `execa`.
|
||||
*
|
||||
* @return {String} The sha of the commit associated with `tagName` on the remote repository.
|
||||
|
||||
@@ -11,7 +11,7 @@ test("Replace multiple sensitive environment variable values", (t) => {
|
||||
);
|
||||
});
|
||||
|
||||
test("Replace multiple occurences of sensitive environment variable values", (t) => {
|
||||
test("Replace multiple occurrences of sensitive environment variable values", (t) => {
|
||||
const env = { secretKey: "secret" };
|
||||
t.is(
|
||||
hideSensitive(env)(`https://user:${env.secretKey}@host.com?token=${env.secretKey}`),
|
||||
|
||||
@@ -96,7 +96,7 @@ test("Normalize and load plugin from function", async (t) => {
|
||||
t.is(typeof plugin, "function");
|
||||
});
|
||||
|
||||
test("Normalize and load plugin that retuns multiple functions", async (t) => {
|
||||
test("Normalize and load plugin that returns multiple functions", async (t) => {
|
||||
const plugin = await normalize(
|
||||
{ cwd, options: {}, logger: t.context.logger },
|
||||
"verifyConditions",
|
||||
|
||||
@@ -52,7 +52,7 @@ test("validateStep: optional plugin configuration", (t) => {
|
||||
t.true(validateStep(type, { path: () => {}, options: "value" }));
|
||||
t.false(validateStep(type, { path: null }));
|
||||
|
||||
// Considered as an Array of 2 definitions and not as one Array definition in case of a muliple plugin type
|
||||
// Considered as an Array of 2 definitions and not as one Array definition in case of a multiple plugin type
|
||||
t.false(validateStep(type, [() => {}, { options: "value" }]));
|
||||
t.false(validateStep(type, ["plugin-path.js", { options: "value" }]));
|
||||
|
||||
@@ -134,7 +134,7 @@ test("validateStep: required plugin configuration", (t) => {
|
||||
t.true(validateStep(type, { path: () => {}, options: "value" }));
|
||||
t.false(validateStep(type, { path: null }));
|
||||
|
||||
// Considered as an Array of 2 definitions and not as one Array definition in the case of a muliple plugin type
|
||||
// Considered as an Array of 2 definitions and not as one Array definition in the case of a multiple plugin type
|
||||
t.false(validateStep(type, [() => {}, { options: "value" }]));
|
||||
t.false(validateStep(type, ["plugin-path.js", { options: "value" }]));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user