Compare commits

...
23 Commits
Author SHA1 Message Date
NickandGitHub 3ecc196d8a feat(config): Use cosmiconfig defaults to support .cjs config files (#1815)
This change adds support for `*.cjs` config files by removing the
explicit use of `searchPlaces` options and relying and the default
search places generated by `cosmicconfig`.  As per the docs for
[`cosmicconfig`][cc], the defaults include all the extensions/formats
previously supported by semantic-release in addition to the new .cjs
variants.

Resolves [#1814][issue].

[issue]: https://github.com/semantic-release/semantic-release/issues/1814
[cc]: https://github.com/davidtheclark/cosmiconfig#searchplaces
2021-02-25 21:04:04 -06:00
Micael JarniacandGitHub acf8bc4d21 docs: fix missing whitespace (#1821) 2021-02-24 16:20:35 -08:00
Kiran KoiralaandGitHub 67dfb676bc docs(README): change link to Angular's Contribution guidelines instead of Angular.js's Developers guide (#1817) 2021-02-23 10:42:30 -08:00
f25c3527df chore(deps): lock file maintenance (#1813)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-22 06:51:31 +00:00
6013a5633e chore(deps): update dependency p-retry to v4.4.0 (#1803)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-15 19:43:36 +00:00
d2782484c8 chore(deps): lock file maintenance (#1800)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-15 04:18:03 +00:00
34e5ddad12 chore(deps): update dependency js-yaml to v3.14.1 (#1797)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-13 10:17:05 +00:00
mcnesiumandGitHub a9be97b56b fix: update link to GitLab CI introduction (#1794) 2021-02-12 13:45:36 -08:00
Alexis SaettlerandGitHub 85bc213f04 docs: add semantic-release-github-pullrequest to list of community plugins (#1790) 2021-02-11 09:09:58 -08:00
Matt TraviandGitHub 8e3a6cbef2 docs(discussions): updated spectrum references to point to discussions instead (#1782)
for #1764
2021-02-09 08:22:21 -08:00
a2eaed086f fix(deps): update dependency marked to v2
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-08 07:45:59 -08:00
b22e591c96 chore(deps): lock file maintenance (#1779)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-08 02:04:34 +00:00
Matt TraviandGitHub fc32afa776 build(engine-strict): strictly enforced node version compatibility for dependencies (#1763) 2021-02-04 09:26:18 -08:00
8ea81ae6c9 chore(deps): update dependency delay to v5 (#1771)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-01 10:01:31 -08:00
e4002c8bd7 chore(deps): lock file maintenance (#1770)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-01 04:03:39 +00:00
d738dd0fb7 chore(deps): lock file maintenance (#1769)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-01 01:56:15 +00:00
4c7222d648 chore(deps): update dependency delay to v4.4.1 (#1768)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-30 10:47:21 +00:00
54bf761f7e chore(deps): update dependency nock to v13.0.7 (#1767)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-30 06:05:46 +00:00
ea5e813192 chore(deps): lock file maintenance (#1761)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-25 23:26:59 +00:00
Gregor Martynus a7f008253c style: prettier 2021-01-25 13:48:03 -08:00
Gregor Martynus ece7275743 test: bump retries in gitbox.createRepo() helper, see https://github.com/semantic-release/semantic-release/pull/1761\#issuecomment-767122221 2021-01-25 13:27:20 -08:00
16a9fb00e9 chore(deps): update dependency sinon to v9.2.4 (#1760)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-23 13:28:47 +00:00
854d643bed chore(deps): update dependency p-retry to v4.3.0 (#1759)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-01-23 11:16:17 +00:00
10 changed files with 1483 additions and 1735 deletions
+3 -1
View File
@@ -17,7 +17,7 @@ jobs:
strategy:
matrix:
node-version:
- 10
- 10.18.0
- 12
- 14
@@ -31,6 +31,8 @@ jobs:
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Ensure dependencies are compatible with the version of node
run: echo 'engine-strict=true' >> .npmrc
- uses: bahmutov/npm-install@v1
- run: npm run test:ci
+4 -4
View File
@@ -1,8 +1,8 @@
<h1 align="center" style="border-bottom: none;">📦🚀 semantic-release</h1>
<h3 align="center">Fully automated version management and package publishing</h3>
<p align="center">
<a href="https://spectrum.chat/semantic-release">
<img alt="Join the community on Spectrum" src="https://withspectrum.github.io/badge/badge.svg">
<a href="https://github.com/semantic-release/semantic-release/discussions">
<img alt="Join the community on GitHub Discussions" src="https://img.shields.io/badge/Join%20the%20community-on%20GitHub%20Discussions-blue">
</a>
<a href="https://github.com/semantic-release/semantic-release/actions?query=workflow%3ATest+branch%3Amaster">
<img alt="Build states" src="https://github.com/semantic-release/semantic-release/workflows/Test/badge.svg">
@@ -48,7 +48,7 @@ This removes the immediate connection between human emotions and version numbers
**semantic-release** uses the commit messages to determine the type of changes in the codebase. Following formalized conventions for commit messages, **semantic-release** automatically determines the next [semantic version](https://semver.org) number, generates a changelog and publishes the release.
By default **semantic-release** uses [Angular Commit Message Conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines). The commit message format can be changed with the [`preset` or `config` options](docs/usage/configuration.md#options) of the [@semantic-release/commit-analyzer](https://github.com/semantic-release/commit-analyzer#options) and [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator#options) plugins.
By default **semantic-release** uses [Angular Commit Message Conventions](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#-commit-message-format). The commit message format can be changed with the [`preset` or `config` options](docs/usage/configuration.md#options) of the [@semantic-release/commit-analyzer](https://github.com/semantic-release/commit-analyzer#options) and [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator#options) plugins.
Tools such as [commitizen](https://github.com/commitizen/cz-cli) or [commitlint](https://github.com/conventional-changelog/commitlint) can be used to help contributors and enforce valid commit messages.
@@ -131,7 +131,7 @@ In order to use **semantic-release** you need:
## Get help
- [Stack Overflow](https://stackoverflow.com/questions/tagged/semantic-release)
- [Spectrum community](https://spectrum.chat/semantic-release)
- [GitHub Discussions](https://github.com/semantic-release/semantic-release/discussions)
- [Twitter](https://twitter.com/SemanticRelease)
## Badge
+1 -1
View File
@@ -1,7 +1,7 @@
# semantic-release documentation
- [Usage](usage/README.md) - **semantic-release** installation and configuration
- [Extending](extending/README.md)- Extending **semantic-release** with plugins and shareable configurations
- [Extending](extending/README.md) - Extending **semantic-release** with plugins and shareable configurations
- [Recipes](recipes/README.md) - Community written recipes for common **semantic-release** use-cases
- [Developer Guide](developer-guide/README.md) - The essentials of writing a **semantic-release** plugin or shareable configurations
- [Support](support/README.md) - FAQ and troubleshooting
+3
View File
@@ -91,6 +91,9 @@
- [semantic-release-github-pages](https://github.com/qiwi/semantic-release-gh-pages-plugin)
- `verifyConditions`: Verify the presence of the auth token set via environment variables.
- `publish`: Pushes commit to the documentation branch.
- [semantic-release-github-pullrequest](https://github.com/asbiin/semantic-release-github-pullrequest)
- `verifyConditions`: Verify the presence and the validity of the GitHub authentication and other configuration.
- `publish`: Create a branch to upload all assets and create the pull request on the base branch on GitHub.
- [leiningen-semantic-release](https://github.com/NoxHarmonium/leiningen-semantic-release)
- `verifyConditions`: Checks the project.clj is syntactically valid.
- `prepare`: Update the project.clj version and package the output jar file.
+1 -1
View File
@@ -8,7 +8,7 @@ Here is a few example of the CI services that can be used to achieve this:
- [CircleCI Workflows](https://circleci.com/docs/2.0/workflows)
- [GitHub Actions](https://github.com/features/actions)
- [Codeship Deployment Pipelines](https://documentation.codeship.com/basic/builds-and-configuration/deployment-pipelines)
- [GitLab Pipelines](https://docs.gitlab.com/ee/ci/pipelines.html#introduction-to-pipelines-and-jobs)
- [GitLab Pipelines](https://docs.gitlab.com/ce/ci/introduction/)
- [Codefresh Pipelines](https://codefresh.io/docs/docs/configure-ci-cd-pipeline/introduction-to-codefresh-pipelines)
- [Wercker Workflows](http://devcenter.wercker.com/docs/workflows)
- [GoCD Pipelines](https://docs.gocd.org/current/introduction/concepts_in_go.html#pipeline).
+1 -10
View File
@@ -9,19 +9,10 @@ const plugins = require('./plugins');
const {validatePlugin, parseConfig} = require('./plugins/utils');
const CONFIG_NAME = 'release';
const CONFIG_FILES = [
'package.json',
`.${CONFIG_NAME}rc`,
`.${CONFIG_NAME}rc.json`,
`.${CONFIG_NAME}rc.yaml`,
`.${CONFIG_NAME}rc.yml`,
`.${CONFIG_NAME}rc.js`,
`${CONFIG_NAME}.config.js`,
];
module.exports = async (context, cliOptions) => {
const {cwd, env} = context;
const {config, filepath} = (await cosmiconfig(CONFIG_NAME, {searchPlaces: CONFIG_FILES}).search(cwd)) || {};
const {config, filepath} = (await cosmiconfig(CONFIG_NAME).search(cwd)) || {};
debug('load config from: %s', filepath);
+1419 -1711
View File
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -37,7 +37,7 @@
"hook-std": "^2.0.0",
"hosted-git-info": "^3.0.0",
"lodash": "^4.17.15",
"marked": "^1.0.0",
"marked": "^2.0.0",
"marked-terminal": "^4.0.0",
"micromatch": "^4.0.2",
"p-each-series": "^2.1.0",
@@ -53,18 +53,18 @@
"ava": "3.15.0",
"clear-module": "4.1.1",
"codecov": "3.8.1",
"delay": "4.4.0",
"delay": "5.0.0",
"dockerode": "3.2.1",
"file-url": "3.0.0",
"fs-extra": "9.1.0",
"got": "11.8.1",
"js-yaml": "3.14.0",
"js-yaml": "3.14.1",
"mockserver-client": "5.11.2",
"nock": "13.0.6",
"nock": "13.0.7",
"nyc": "15.1.0",
"p-retry": "4.2.0",
"p-retry": "4.4.0",
"proxyquire": "2.1.3",
"sinon": "9.2.3",
"sinon": "9.2.4",
"stream-buffers": "3.0.2",
"tempy": "1.0.0",
"xo": "0.29.1"
+44
View File
@@ -191,6 +191,28 @@ test('Read options from .releaserc.js', async (t) => {
t.deepEqual(t.context.plugins.args[0][0], {options: expected, cwd});
});
test('Read options from .releaserc.cjs', async (t) => {
// Create a git repository, set the current working directory at the root of the repo
const {cwd} = await gitRepo();
const options = {
analyzeCommits: {path: 'analyzeCommits', param: 'analyzeCommits_param'},
branches: ['test_branch'],
repositoryUrl: 'https://host.null/owner/module.git',
tagFormat: `v\${version}`,
plugins: false,
};
// Create .releaserc.cjs in repository root
await writeFile(path.resolve(cwd, '.releaserc.cjs'), `module.exports = ${JSON.stringify(options)}`);
const {options: result} = await t.context.getConfig({cwd});
const expected = {...options, branches: ['test_branch']};
// Verify the options contains the plugin config from .releaserc.cjs
t.deepEqual(result, expected);
// Verify the plugins module is called with the plugin options from .releaserc.cjs
t.deepEqual(t.context.plugins.args[0][0], {options: expected, cwd});
});
test('Read options from release.config.js', async (t) => {
// Create a git repository, set the current working directory at the root of the repo
const {cwd} = await gitRepo();
@@ -213,6 +235,28 @@ test('Read options from release.config.js', async (t) => {
t.deepEqual(t.context.plugins.args[0][0], {options: expected, cwd});
});
test('Read options from release.config.cjs', async (t) => {
// Create a git repository, set the current working directory at the root of the repo
const {cwd} = await gitRepo();
const options = {
analyzeCommits: {path: 'analyzeCommits', param: 'analyzeCommits_param'},
branches: ['test_branch'],
repositoryUrl: 'https://host.null/owner/module.git',
tagFormat: `v\${version}`,
plugins: false,
};
// Create release.config.cjs in repository root
await writeFile(path.resolve(cwd, 'release.config.cjs'), `module.exports = ${JSON.stringify(options)}`);
const {options: result} = await t.context.getConfig({cwd});
const expected = {...options, branches: ['test_branch']};
// Verify the options contains the plugin config from release.config.cjs
t.deepEqual(result, expected);
// Verify the plugins module is called with the plugin options from release.config.cjs
t.deepEqual(t.context.plugins.args[0][0], {options: expected, cwd});
});
test('Prioritise CLI/API parameters over file configuration and git repo', async (t) => {
// Create a git repository, set the current working directory at the root of the repo
let {cwd, repositoryUrl} = await gitRepo();
+1 -1
View File
@@ -63,7 +63,7 @@ async function createRepo(name, branch = 'master', description = `Repository ${n
const authUrl = `http://${gitCredential}@${SERVER_HOST}:${HOST_PORT}/git/${name}.git`;
// Retry as the server might take a few ms to make the repo available push
await pRetry(() => initBareRepo(authUrl, branch), {retries: 3, minTimeout: 500, factor: 2});
await pRetry(() => initBareRepo(authUrl, branch), {retries: 5, minTimeout: 500, factor: 2});
const cwd = await gitShallowClone(authUrl);
return {cwd, repositoryUrl, authUrl};