Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
305674d1db | ||
|
|
bef62a26b0 | ||
|
|
4711a38196 | ||
|
|
6726543295 | ||
|
|
9504ea8706 | ||
|
|
1c980143d1 | ||
|
|
d1120546b5 | ||
|
|
164697ccd3 | ||
|
|
cad08804e6 | ||
|
|
bfd2506f5b | ||
|
|
3c4137198d | ||
|
|
40b359784d | ||
|
|
2baab7f78a | ||
|
|
fabdf9b1c6 | ||
|
|
46fd8102ed | ||
|
|
c8895edef6 | ||
|
|
6ed3fa5a1e | ||
|
|
eb881d5721 | ||
|
|
c119263f00 | ||
|
|
382edf1c7d | ||
|
|
e247cca3c7 | ||
|
|
bd664bdf6a | ||
|
|
bdfb5296f2 | ||
|
|
f5d2d7ee05 | ||
|
|
3773a682a7 | ||
|
|
4445caeb70 | ||
|
|
f1e0892c02 | ||
|
|
50cf1aacbe | ||
|
|
d8e16a055f | ||
|
|
579259c578 | ||
|
|
842c0eb8bc | ||
|
|
b5d80411ea | ||
|
|
0586f55164 | ||
|
|
473925187a | ||
|
|
aaed2f4a6f | ||
|
|
65aea33182 | ||
|
|
a8d863834a | ||
|
|
de413899fe | ||
|
|
c6c39d67f7 | ||
|
|
dac69c981a | ||
|
|
4d3c394522 | ||
|
|
125d41ebbc | ||
|
|
b178c18fde | ||
|
|
cff501a083 | ||
|
|
8e6295e214 | ||
|
|
a92afa2a7a | ||
|
|
e759493e07 | ||
|
|
7bbf1e804a | ||
|
|
84f2ee9374 | ||
|
|
6070bf61fc | ||
|
|
561e2d648d |
@@ -18,8 +18,8 @@ jobs:
|
||||
name: release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
with:
|
||||
cache: npm
|
||||
node-version: lts/*
|
||||
|
||||
@@ -15,11 +15,11 @@ jobs:
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Run analysis
|
||||
uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0
|
||||
uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
|
||||
with:
|
||||
results_file: results.sarif
|
||||
results_format: sarif
|
||||
@@ -31,6 +31,6 @@ jobs:
|
||||
path: results.sarif
|
||||
retention-days: 5
|
||||
- name: Upload to code-scanning
|
||||
uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8
|
||||
uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
+27
-15
@@ -20,6 +20,7 @@ env:
|
||||
NPM_CONFIG_COLOR: always
|
||||
|
||||
jobs:
|
||||
# verify against ranges defined as supported in engines.node
|
||||
test_matrix:
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -29,37 +30,48 @@ jobs:
|
||||
- 20
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
timeout-minutes: 5
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- 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@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: npm
|
||||
- run: npm clean-install
|
||||
- name: Ensure dependencies are compatible with the version of node
|
||||
run: npx ls-engines
|
||||
- run: npm run test:ci
|
||||
- run: npm audit signatures
|
||||
- run: npm test
|
||||
|
||||
# verify against the node version defined for development in the .nvmrc
|
||||
test_dev:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
- 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
|
||||
with:
|
||||
node-version-file: .nvmrc
|
||||
cache: npm
|
||||
- run: npm clean-install
|
||||
- run: npm audit signatures
|
||||
- run: npm test
|
||||
|
||||
# separate job to set as required in branch protection,
|
||||
# as the build names above change each time Node versions change
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test_matrix
|
||||
needs:
|
||||
- test_dev
|
||||
- test_matrix
|
||||
if: always()
|
||||
steps:
|
||||
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
|
||||
- uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
|
||||
with:
|
||||
node-version: lts/*
|
||||
cache: npm
|
||||
- run: npm clean-install
|
||||
- run: npm audit signatures
|
||||
- run: npm run lint
|
||||
- name: All matrix versions passed
|
||||
if: ${{ !(contains(needs.*.result, 'failure')) }}
|
||||
run: exit 0
|
||||
|
||||
+58
-18
@@ -146,7 +146,7 @@ If possible, make [atomic commits](https://en.wikipedia.org/wiki/Atomic_commit),
|
||||
|
||||
- a commit should contain exactly one self-contained functional change
|
||||
- a functional change should be contained in exactly one commit
|
||||
- a commit should not create an inconsistent state (such as test errors, linting errors, partial fix, feature with documentation etc...)
|
||||
- a commit should not create an inconsistent state (such as test errors, linting errors, partial fix, feature without documentation, etc...)
|
||||
|
||||
A complex feature can be broken down into multiple commits as long as each one maintains a consistent state and consists of a self-contained change.
|
||||
|
||||
@@ -241,42 +241,82 @@ $ git clone https://github.com/semantic-release/<repo-name>
|
||||
$ cd <repo-name>
|
||||
# Assign the original repo to a remote called "upstream"
|
||||
$ git remote add upstream https://github.com/semantic-release/<repo-name>
|
||||
# Switch your node version to the version defined by the project as the development version
|
||||
# This step assumes you have already installed and configured https://github.com/nvm-sh/nvm
|
||||
# You may need to run `nvm install` if you have not already installed the development node version
|
||||
$ nvm use
|
||||
# Install the dependencies
|
||||
$ npm install
|
||||
```
|
||||
|
||||
### Lint
|
||||
### Verification
|
||||
|
||||
All the [semantic-release](https://github.com/semantic-release) repositories use [XO](https://github.com/sindresorhus/xo) for linting and [Prettier](https://prettier.io) for formatting.
|
||||
Prettier formatting will be automatically verified and fixed by XO.
|
||||
The `test` script is structured to execute as much of the verification for the project as possible.
|
||||
Ensuring that the `test` script fully passes in the node version defined as the development version in the `.nvmrc`
|
||||
minimizes the chances of the test workflow failing after pushing your changes.
|
||||
|
||||
Before pushing your code changes make sure there are no linting errors with `npm run lint`.
|
||||
> [!IMPORTANT]
|
||||
> Before pushing your code changes, be sure to run the verification for the project with `npm test`.
|
||||
|
||||
**Tips**:
|
||||
[npm-run-all2](https://www.npmjs.com/package/npm-run-all2) is used to enable running multiple independent lint and test
|
||||
scripts together from the `test` script.
|
||||
This enables the test script to not only run all scripts, but also parallelize some of the scripts to optimize the overall
|
||||
time required for verification.
|
||||
|
||||
- Most linting errors can be automatically fixed with `npm run lint -- --fix`.
|
||||
- Install the [XO plugin](https://github.com/sindresorhus/xo#editor-plugins) for your editor to see linting errors directly in your editor and automatically fix them on save.
|
||||
When a failure occurs with the `test`, the output can be a bit confusing because there may be output from multiple parallel
|
||||
scripts mixed together.
|
||||
To investigate the failure with cleaner output, re-run the problematic script directly using the script name from the label
|
||||
included on the left side of the output
|
||||
|
||||
### Tests
|
||||
```shell
|
||||
$ npm run <script-name>
|
||||
```
|
||||
|
||||
Running the integration test requires you to install [Docker](https://docs.docker.com/engine/installation) on your machine.
|
||||
#### Lint
|
||||
|
||||
##### Prettier
|
||||
|
||||
All the [semantic-release](https://github.com/semantic-release) repositories use [Prettier](https://prettier.io) for formatting.
|
||||
Prettier formatting will be automatically verified by the `lint:prettier` script, included in the `test` script.
|
||||
|
||||
> [!NOTE]
|
||||
> Most linting errors can be automatically fixed with `npm run lint:prettier:fix`.
|
||||
|
||||
##### Other Lint Tools
|
||||
|
||||
Other tools are used for specific compatibility concerns, but are less likely to result in failures in common contributions.
|
||||
Please follow the guidance of these tools if failures are encountered.
|
||||
|
||||
#### Tests
|
||||
|
||||
> [!NOTE]
|
||||
> Before pushing your code changes make sure all **tests pass** and the unit test **coverage is 100%**:
|
||||
|
||||
All the [semantic-release](https://github.com/semantic-release) repositories use [AVA](https://github.com/avajs/ava) for writing and running tests.
|
||||
|
||||
Before pushing your code changes make sure all **tests pass** and the **coverage is 100%**:
|
||||
|
||||
```bash
|
||||
$ npm run test
|
||||
```
|
||||
|
||||
**Tips:** During development you can:
|
||||
During development, you can:
|
||||
|
||||
- run only a subset of test files with `ava <glob>`, for example `ava test/mytestfile.test.js`
|
||||
- run in watch mode with `ava -w` to automatically run a test file when you modify it
|
||||
- run only the test you are working on by adding [`.only` to the test definition](https://github.com/avajs/ava#running-specific-tests)
|
||||
|
||||
##### Unit Tests
|
||||
|
||||
```bash
|
||||
$ npm run test:unit
|
||||
```
|
||||
|
||||
##### Integration Tests
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Running the integration test requires you to install [Docker](https://docs.docker.com/engine/installation) on your machine.
|
||||
|
||||
```bash
|
||||
$ npm run test:integration
|
||||
```
|
||||
|
||||
### Commits
|
||||
|
||||
All the [semantic-release](https://github.com/semantic-release) repositories use [Commitizen](https://github.com/commitizen/cz-cli) to help you create [valid commit messages](#commit-message-guidelines).
|
||||
|
||||
After staging your changes with `git add`, run `npm run cm` to start the interactive commit message CLI.
|
||||
Assuming you have [installed Commitizen](https://github.com/commitizen/cz-cli#installing-the-command-line-tool), run `git cz` to start the interactive commit message CLI rather than `git commit` when committing.
|
||||
|
||||
@@ -179,6 +179,9 @@
|
||||
- [semantic-release-coralogix](https://github.com/adobe/semantic-release-coralogix)
|
||||
- `verifyConditions` Verified that required credentials are provided and API is accessible
|
||||
- `publish` add a release tag to Coralogix
|
||||
- [semantic-release-jira-notes](https://github.com/iamludal/semantic-release-jira-notes)
|
||||
- `verifyConditions`: Validate the config options.
|
||||
- `generateNotes`: Generate the release notes with links to JIRA issues.
|
||||
- [semantic-release-major-tag](https://github.com/doteric/semantic-release-major-tag)
|
||||
- `success` Create major version tag, for example `v1`.
|
||||
- [semantic-release-yarn](https://github.com/hongaar/semantic-release-yarn)
|
||||
@@ -187,3 +190,7 @@
|
||||
- `prepare` Update the `package.json` version and create the package tarball.
|
||||
- `addChannel` Add a tag for the release.
|
||||
- `publish` Publish to the npm registry.
|
||||
- [semantic-release-pub](https://github.com/zeshuaro/semantic-release-pub)
|
||||
- `verifyConditions`: Verify the presence of the `pub.dev` authentication and release configuration
|
||||
- `prepare`: Update the `pubspec.yaml` version
|
||||
- `publish`: Publish the package onto the `pub.dev` registry
|
||||
|
||||
+1
-1
@@ -195,7 +195,7 @@ If you need more control over the timing of releases, see [Triggering a release]
|
||||
|
||||
## Can I set the initial release version of my package to `0.0.1`?
|
||||
|
||||
This is not supported by **semantic-release** as it's not considered a good practice, mostly because [Semantic Versioning](https://semver.org) rules applies differently to major version zero.
|
||||
This is not supported by semantic-release. [Semantic Versioning](https://semver.org/) rules apply differently to major version zero and supporting those differences is out of scope and not one of the goals of the semantic-release project.
|
||||
|
||||
If your project is under heavy development, with frequent breaking changes, and is not production ready yet we recommend [publishing pre-releases](../recipes/release-workflow/pre-releases.md#publishing-pre-releases).
|
||||
|
||||
|
||||
@@ -40,6 +40,17 @@ The following three examples are the same.
|
||||
}
|
||||
```
|
||||
|
||||
- Via `release.config.cjs` file:
|
||||
|
||||
```js
|
||||
/**
|
||||
* @type {import('semantic-release').GlobalConfig}
|
||||
*/
|
||||
module.exports = {
|
||||
branches: ["master", "next"],
|
||||
};
|
||||
```
|
||||
|
||||
- Via CLI argument:
|
||||
|
||||
```bash
|
||||
|
||||
Generated
+6853
-358
File diff suppressed because it is too large
Load Diff
+36
-16
@@ -6,9 +6,9 @@
|
||||
"author": "Stephan Bönnemann <stephan@boennemann.me> (http://boennemann.me)",
|
||||
"ava": {
|
||||
"files": [
|
||||
"test/**/*.test.js"
|
||||
"test/**/*.test.js",
|
||||
"!test/integration.test.js"
|
||||
],
|
||||
"failFast": true,
|
||||
"nodeArguments": [
|
||||
"--loader=testdouble",
|
||||
"--no-warnings"
|
||||
@@ -35,16 +35,16 @@
|
||||
"aggregate-error": "^5.0.0",
|
||||
"cosmiconfig": "^8.0.0",
|
||||
"debug": "^4.0.0",
|
||||
"env-ci": "^9.0.0",
|
||||
"env-ci": "^10.0.0",
|
||||
"execa": "^8.0.0",
|
||||
"figures": "^5.0.0",
|
||||
"figures": "^6.0.0",
|
||||
"find-versions": "^5.1.0",
|
||||
"get-stream": "^6.0.0",
|
||||
"git-log-parser": "^1.2.0",
|
||||
"hook-std": "^3.0.0",
|
||||
"hosted-git-info": "^7.0.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"marked": "^5.0.0",
|
||||
"marked": "^9.0.0",
|
||||
"marked-terminal": "^6.0.0",
|
||||
"micromatch": "^4.0.2",
|
||||
"p-each-series": "^3.0.0",
|
||||
@@ -61,24 +61,28 @@
|
||||
"c8": "8.0.1",
|
||||
"clear-module": "4.1.2",
|
||||
"codecov": "3.8.3",
|
||||
"dockerode": "3.3.5",
|
||||
"cz-conventional-changelog": "3.3.0",
|
||||
"dockerode": "4.0.0",
|
||||
"file-url": "4.0.0",
|
||||
"fs-extra": "11.1.1",
|
||||
"got": "13.0.0",
|
||||
"js-yaml": "4.1.0",
|
||||
"lockfile-lint": "4.12.1",
|
||||
"ls-engines": "0.9.0",
|
||||
"mockserver-client": "5.15.0",
|
||||
"nock": "13.3.3",
|
||||
"p-retry": "6.0.0",
|
||||
"nock": "13.3.7",
|
||||
"npm-run-all2": "6.1.1",
|
||||
"p-retry": "6.1.0",
|
||||
"prettier": "3.0.3",
|
||||
"sinon": "16.0.0",
|
||||
"publint": "0.2.5",
|
||||
"sinon": "17.0.0",
|
||||
"stream-buffers": "3.0.2",
|
||||
"tempy": "3.1.0",
|
||||
"testdouble": "3.19.0"
|
||||
"testdouble": "3.20.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.17 || >=20.6.1"
|
||||
},
|
||||
"exports": "./index.js",
|
||||
"files": [
|
||||
"bin",
|
||||
"docs",
|
||||
@@ -115,6 +119,14 @@
|
||||
],
|
||||
"all": true
|
||||
},
|
||||
"lockfile-lint": {
|
||||
"path": "package-lock.json",
|
||||
"type": "npm",
|
||||
"validate-https": true,
|
||||
"allowed-hosts": [
|
||||
"npm"
|
||||
]
|
||||
},
|
||||
"prettier": {
|
||||
"printWidth": 120,
|
||||
"trailingComma": "es5"
|
||||
@@ -127,14 +139,22 @@
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/semantic-release/semantic-release.git"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
"path": "./node_modules/cz-conventional-changelog"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"codecov": "codecov -f coverage/coverage-final.json",
|
||||
"lint": "prettier --check \"*.{js,json,md}\" \".github/**/*.{md,yml}\" \"docs/**/*.md\" \"{bin,lib,test}/**/*.js\"",
|
||||
"lint:fix": "prettier --write \"*.{js,json,md}\" \".github/**/*.{md,yml}\" \"docs/**/*.md\" \"{bin,lib,test}/**/*.js\"",
|
||||
"pretest": "npm run lint",
|
||||
"lint:prettier": "prettier --check \"*.{js,json,md}\" \".github/**/*.{md,yml}\" \"docs/**/*.md\" \"{bin,lib,test}/**/*.js\"",
|
||||
"lint:prettier:fix": "prettier --write \"*.{js,json,md}\" \".github/**/*.{md,yml}\" \"docs/**/*.md\" \"{bin,lib,test}/**/*.js\"",
|
||||
"lint:lockfile": "lockfile-lint",
|
||||
"lint:engines": "ls-engines",
|
||||
"lint:publish": "publint --strict",
|
||||
"semantic-release": "./bin/semantic-release.js",
|
||||
"test": "c8 ava --verbose",
|
||||
"test:ci": "c8 ava --verbose"
|
||||
"test": "npm-run-all --print-label --parallel lint:* --parallel test:*",
|
||||
"test:unit": "c8 ava --verbose",
|
||||
"test:integration": "ava --verbose test/integration.test.js"
|
||||
},
|
||||
"renovate": {
|
||||
"extends": [
|
||||
|
||||
Reference in New Issue
Block a user