Compare commits
	
		
			13 Commits
		
	
	
		
			master
			...
			1692/setup
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | f66aa27dd7 | ||
|  | daa25abccf | ||
|  | 699875cedd | ||
|  | 2cc7d517b1 | ||
|  | 7beb13af45 | ||
|  | 1c85b88c9f | ||
|  | fd5b64a99a | ||
|  | 9e83fa020d | ||
|  | 0ae2f632ff | ||
|  | 9b1afca0f5 | ||
|  | 3c3b20c470 | ||
|  | 3da96bbb90 | ||
|  | a2266ca47d | 
							
								
								
									
										21
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.github/workflows/release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | name: Release | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - next | ||||||
|  |       - beta | ||||||
|  |       - "*.x" # maintenance releases branches | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   release: | ||||||
|  |     name: release | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - uses: actions/setup-node@v1 | ||||||
|  |       - uses: bahmutov/npm-install@v1 | ||||||
|  |       - run: npx semantic-release | ||||||
|  |         env: | ||||||
|  |           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||||
|  |           NPM_TOKEN: ${{ secrets.SEMANTIC_RELEASE_BOT_NPM_TOKEN }} | ||||||
							
								
								
									
										46
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | |||||||
|  | name: Test | ||||||
|  | 
 | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - renovate/** | ||||||
|  |       - 1692/setup-renovate-debug | ||||||
|  | 
 | ||||||
|  |   pull_request: | ||||||
|  |     types: | ||||||
|  |       - opened | ||||||
|  |       - synchronize | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   test_matrix: | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         node-version: | ||||||
|  |           # - 10 | ||||||
|  |           - 12 | ||||||
|  |           # - 14 | ||||||
|  | 
 | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  | 
 | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - 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@v1 | ||||||
|  |         with: | ||||||
|  |           node-version: ${{ matrix.node-version }} | ||||||
|  |       - uses: bahmutov/npm-install@v1 | ||||||
|  |       - run: npx ava test/integration.test.js | ||||||
|  | 
 | ||||||
|  |   # 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 | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  |       - uses: actions/setup-node@v1 | ||||||
|  |       - uses: bahmutov/npm-install@v1 | ||||||
|  |       - run: npm run lint | ||||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -125,10 +125,6 @@ $RECYCLE.BIN/ | |||||||
| # Windows shortcuts | # Windows shortcuts | ||||||
| *.lnk | *.lnk | ||||||
| 
 | 
 | ||||||
| # Lockfiles |  | ||||||
| package-lock.json |  | ||||||
| yarn.lock |  | ||||||
| 
 |  | ||||||
| # Gitbook | # Gitbook | ||||||
| _book | _book | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								.travis.yml
									
									
									
									
									
								
							| @ -1,11 +0,0 @@ | |||||||
| version: ~> 1.0 |  | ||||||
| 
 |  | ||||||
| services: |  | ||||||
|   - docker |  | ||||||
| 
 |  | ||||||
| import: |  | ||||||
|   - .travis/node.yml |  | ||||||
|   - .travis/node-versions.yml |  | ||||||
|   - .travis/semantic-release.yml |  | ||||||
|   - .travis/greenkeeper.yml |  | ||||||
|   - .travis/codecov.yml |  | ||||||
| @ -1,2 +0,0 @@ | |||||||
| after_success: |  | ||||||
|   - npm run codecov |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| branches: |  | ||||||
|   only: |  | ||||||
|     - /^greenkeeper.*$/ |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| node_js: |  | ||||||
|   - 12 |  | ||||||
|   - 10.18 |  | ||||||
| @ -1,11 +0,0 @@ | |||||||
| language: node_js |  | ||||||
| 
 |  | ||||||
| cache: |  | ||||||
|   npm: false |  | ||||||
| 
 |  | ||||||
| # Retry install on fail to avoid failing a build on network/disk/external errors |  | ||||||
| install: |  | ||||||
|   - travis_retry npm install |  | ||||||
| 
 |  | ||||||
| script: |  | ||||||
|   - npm run test |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| branches: |  | ||||||
|   only: |  | ||||||
|     - master |  | ||||||
|     - next |  | ||||||
|     - beta |  | ||||||
|     - /^\d+\.(\d+|x)(\.x)?$/ |  | ||||||
| 
 |  | ||||||
| jobs: |  | ||||||
|   include: |  | ||||||
|     - stage: release |  | ||||||
|       node_js: lts/* |  | ||||||
|       install: |  | ||||||
|         - travis_retry npm install |  | ||||||
|       script: |  | ||||||
|         - npm run semantic-release |  | ||||||
							
								
								
									
										17
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								README.md
									
									
									
									
									
								
							| @ -4,14 +4,8 @@ | |||||||
|   <a href="https://spectrum.chat/semantic-release"> |   <a href="https://spectrum.chat/semantic-release"> | ||||||
|     <img alt="Join the community on Spectrum" src="https://withspectrum.github.io/badge/badge.svg"> |     <img alt="Join the community on Spectrum" src="https://withspectrum.github.io/badge/badge.svg"> | ||||||
|   </a> |   </a> | ||||||
|   <a href="https://travis-ci.org/semantic-release/semantic-release"> |   <a href="https://github.com/semantic-release/semantic-release/actions?query=workflow%3ATest+branch%3Amaster"> | ||||||
|     <img alt="Travis" src="https://img.shields.io/travis/semantic-release/semantic-release/master.svg"> |     <img alt="Build states" src="https://github.com/semantic-release/semantic-release/workflows/Test/badge.svg"> | ||||||
|   </a> |  | ||||||
|   <a href="https://codecov.io/gh/semantic-release/semantic-release"> |  | ||||||
|     <img alt="Codecov" src="https://img.shields.io/codecov/c/github/semantic-release/semantic-release/master.svg"> |  | ||||||
|   </a> |  | ||||||
|   <a href="https://greenkeeper.io"> |  | ||||||
|     <img alt="Greenkeeper" src="https://badges.greenkeeper.io/semantic-release/semantic-release.svg"> |  | ||||||
|   </a> |   </a> | ||||||
|   <a href="#badge"> |   <a href="#badge"> | ||||||
|     <img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg"> |     <img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg"> | ||||||
| @ -61,7 +55,7 @@ Tools such as [commitizen](https://github.com/commitizen/cz-cli) or [commitlint] | |||||||
| Here is an example of the release type that will be done based on a commit messages: | Here is an example of the release type that will be done based on a commit messages: | ||||||
| 
 | 
 | ||||||
| | Commit message                                                                                                                                                                                   | Release type               | | | Commit message                                                                                                                                                                                   | Release type               | | ||||||
| |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------- | | ||||||
| | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | Patch Release              | | | `fix(pencil): stop graphite breaking when too much pressure applied`                                                                                                                             | Patch Release              | | ||||||
| | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release  | | | `feat(pencil): add 'graphiteWidth' option`                                                                                                                                                       | ~~Minor~~ Feature Release  | | ||||||
| | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release | | | `perf(pencil): remove graphiteWidth option`<br><br>`BREAKING CHANGE: The graphiteWidth option has been removed.`<br>`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release | | ||||||
| @ -75,6 +69,7 @@ Here is an example of the release type that will be done based on a commit messa | |||||||
| For each new commits added to one of the release branches (for example `master`, `next`, `beta`), with `git push` or by merging a pull request or merging from another branch, a CI build is triggered and runs the `semantic-release` command to make a release if there are codebase changes since the last release that affect the package functionalities. | For each new commits added to one of the release branches (for example `master`, `next`, `beta`), with `git push` or by merging a pull request or merging from another branch, a CI build is triggered and runs the `semantic-release` command to make a release if there are codebase changes since the last release that affect the package functionalities. | ||||||
| 
 | 
 | ||||||
| **semantic-release** offers various ways to control the timing, the content and the audience of published releases. See example workflows in the following recipes: | **semantic-release** offers various ways to control the timing, the content and the audience of published releases. See example workflows in the following recipes: | ||||||
|  | 
 | ||||||
| - [Using distribution channels](docs/recipes/distribution-channels.md#publishing-on-distribution-channels) | - [Using distribution channels](docs/recipes/distribution-channels.md#publishing-on-distribution-channels) | ||||||
| - [Maintenance releases](docs/recipes/maintenance-releases.md#publishing-maintenance-releases) | - [Maintenance releases](docs/recipes/maintenance-releases.md#publishing-maintenance-releases) | ||||||
| - [Pre-releases](docs/recipes/pre-releases.md#publishing-pre-releases) | - [Pre-releases](docs/recipes/pre-releases.md#publishing-pre-releases) | ||||||
| @ -84,7 +79,7 @@ For each new commits added to one of the release branches (for example `master`, | |||||||
| After running the tests, the command `semantic-release` will execute the following steps: | After running the tests, the command `semantic-release` will execute the following steps: | ||||||
| 
 | 
 | ||||||
| | Step              | Description                                                                                                                     | | | Step              | Description                                                                                                                     | | ||||||
| |-------------------|---------------------------------------------------------------------------------------------------------------------------------| | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------- | | ||||||
| | Verify Conditions | Verify all the conditions to proceed with the release.                                                                          | | | Verify Conditions | Verify all the conditions to proceed with the release.                                                                          | | ||||||
| | Get last release  | Obtain the commit corresponding to the last release by analyzing [Git tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging). | | | Get last release  | Obtain the commit corresponding to the last release by analyzing [Git tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging). | | ||||||
| | Analyze commits   | Determine the type of release based on the commits added since the last release.                                                | | | Analyze commits   | Determine the type of release based on the commits added since the last release.                                                | | ||||||
| @ -98,6 +93,7 @@ After running the tests, the command `semantic-release` will execute the followi | |||||||
| ## Requirements | ## Requirements | ||||||
| 
 | 
 | ||||||
| In order to use **semantic-release** you need: | In order to use **semantic-release** you need: | ||||||
|  | 
 | ||||||
| - To host your code in a [Git repository](https://git-scm.com) | - To host your code in a [Git repository](https://git-scm.com) | ||||||
| - Use a Continuous Integration service that allows you to [securely set up credentials](docs/usage/ci-configuration.md#authentication) | - Use a Continuous Integration service that allows you to [securely set up credentials](docs/usage/ci-configuration.md#authentication) | ||||||
| - Git CLI version [2.7.1 or higher](docs/support/FAQ.md#why-does-semantic-release-require-git-version--271) installed in your Continuous Integration environment | - Git CLI version [2.7.1 or higher](docs/support/FAQ.md#why-does-semantic-release-require-git-version--271) installed in your Continuous Integration environment | ||||||
| @ -160,7 +156,6 @@ Let people know that your package is published using **semantic-release** by inc | |||||||
| | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | ||||||
| | [Stephan Bönnemann](https://github.com/boennemann)                                                | [Rolf Erik Lekang](https://github.com/relekang)                                              | [Johannes Jörg Schmidt](https://github.com/jo)                                        | [Finn Pauls](https://github.com/finnp)                                           | [Christoph Witzko](https://github.com/christophwitzko)                                                     | | | [Stephan Bönnemann](https://github.com/boennemann)                                                | [Rolf Erik Lekang](https://github.com/relekang)                                              | [Johannes Jörg Schmidt](https://github.com/jo)                                        | [Finn Pauls](https://github.com/finnp)                                           | [Christoph Witzko](https://github.com/christophwitzko)                                                     | | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| <p align="center"> | <p align="center"> | ||||||
|   <img alt="Kill all humans" src="media/bender.png"> |   <img alt="Kill all humans" src="media/bender.png"> | ||||||
| </p> | </p> | ||||||
|  | |||||||
| @ -21,6 +21,13 @@ See https://github.com/semantic-release/semantic-release/blob/master/docs/suppor | |||||||
|   process.exit(1); |   process.exit(1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | console.log("DEBUG START ==========") | ||||||
|  | console.log('process.env') | ||||||
|  | console.log(process.env) | ||||||
|  | console.log('envCi({ env: process.env })') | ||||||
|  | console.log(require('env-ci')({ env: process.env })) | ||||||
|  | console.log("DEBUG END ==========") | ||||||
|  | 
 | ||||||
| execa('git', ['--version']) | execa('git', ['--version']) | ||||||
|   .then(({stdout}) => { |   .then(({stdout}) => { | ||||||
|     var gitVersion = findVersions(stdout)[0]; |     var gitVersion = findVersions(stdout)[0]; | ||||||
|  | |||||||
							
								
								
									
										13513
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										13513
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -122,7 +122,8 @@ | |||||||
|     "lint": "xo", |     "lint": "xo", | ||||||
|     "pretest": "npm run lint", |     "pretest": "npm run lint", | ||||||
|     "semantic-release": "./bin/semantic-release.js", |     "semantic-release": "./bin/semantic-release.js", | ||||||
|     "test": "nyc ava -v" |     "test": "nyc ava -v", | ||||||
|  |     "test:ci": "nyc ava -v" | ||||||
|   }, |   }, | ||||||
|   "xo": { |   "xo": { | ||||||
|     "prettier": true, |     "prettier": true, | ||||||
| @ -130,5 +131,10 @@ | |||||||
|     "rules": { |     "rules": { | ||||||
|       "unicorn/string-content": "off" |       "unicorn/string-content": "off" | ||||||
|     } |     } | ||||||
|  |   }, | ||||||
|  |   "renovate": { | ||||||
|  |     "extends": [ | ||||||
|  |       "github>semantic-release/.github" | ||||||
|  |     ] | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| const path = require('path'); | const path = require('path'); | ||||||
| const test = require('ava'); | const { serial: test } = require('ava'); | ||||||
| const proxyquire = require('proxyquire'); | const proxyquire = require('proxyquire'); | ||||||
| const {escapeRegExp} = require('lodash'); | const {escapeRegExp} = require('lodash'); | ||||||
| const {writeJson, readJson} = require('fs-extra'); | const {writeJson, readJson} = require('fs-extra'); | ||||||
| @ -29,17 +29,24 @@ const npmRegistry = require('./helpers/npm-registry'); | |||||||
| const requireNoCache = proxyquire.noPreserveCache(); | const requireNoCache = proxyquire.noPreserveCache(); | ||||||
| 
 | 
 | ||||||
| // Environment variables used with semantic-release cli (similar to what a user would setup)
 | // Environment variables used with semantic-release cli (similar to what a user would setup)
 | ||||||
|  | const { | ||||||
|  |   GITHUB_ACTION, | ||||||
|  |   GITHUB_TOKEN, | ||||||
|  |   ...processEnvWithoutGitHubActionsVariables | ||||||
|  | } = process.env | ||||||
| const env = { | const env = { | ||||||
|  |   ...processEnvWithoutGitHubActionsVariables, | ||||||
|   ...npmRegistry.authEnv, |   ...npmRegistry.authEnv, | ||||||
|   GH_TOKEN: gitbox.gitCredential, |  | ||||||
|   GITHUB_URL: mockServer.url, |  | ||||||
|   TRAVIS: 'true', |  | ||||||
|   CI: 'true', |   CI: 'true', | ||||||
|  |   GH_TOKEN: gitbox.gitCredential, | ||||||
|  |   TRAVIS: 'true', | ||||||
|   TRAVIS_BRANCH: 'master', |   TRAVIS_BRANCH: 'master', | ||||||
|   TRAVIS_PULL_REQUEST: 'false', |   TRAVIS_PULL_REQUEST: 'false', | ||||||
|  |   GITHUB_API_URL: mockServer.url, | ||||||
| }; | }; | ||||||
|  | 
 | ||||||
| // Environment variables used only for the local npm command used to do verification
 | // Environment variables used only for the local npm command used to do verification
 | ||||||
| const testEnv = { | const npmTestEnv = { | ||||||
|   ...process.env, |   ...process.env, | ||||||
|   ...npmRegistry.authEnv, |   ...npmRegistry.authEnv, | ||||||
|   npm_config_registry: npmRegistry.url, |   npm_config_registry: npmRegistry.url, | ||||||
| @ -74,7 +81,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|     release: {branches: ['master', 'next'], success: false, fail: false}, |     release: {branches: ['master', 'next'], success: false, fail: false}, | ||||||
|   }); |   }); | ||||||
|   // Create a npm-shrinkwrap.json file
 |   // Create a npm-shrinkwrap.json file
 | ||||||
|   await execa('npm', ['shrinkwrap'], {env: testEnv, cwd}); |   await execa('npm', ['shrinkwrap'], {env: npmTestEnv, cwd, extendEnv: false}); | ||||||
| 
 | 
 | ||||||
|   /* No release */ |   /* No release */ | ||||||
|   let verifyMock = await mockServer.mock( |   let verifyMock = await mockServer.mock( | ||||||
| @ -85,7 +92,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   t.log('Commit a chore'); |   t.log('Commit a chore'); | ||||||
|   await gitCommits(['chore: Init repository'], {cwd}); |   await gitCommits(['chore: Init repository'], {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   let {stdout, exitCode} = await execa(cli, [], {env, cwd}); |   let {stdout, exitCode} = await execa(cli, [], {env, cwd, extendEnv: false}); | ||||||
|   t.regex(stdout, /There are no relevant changes, so no new version is released/); |   t.regex(stdout, /There are no relevant changes, so no new version is released/); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| 
 | 
 | ||||||
| @ -108,7 +115,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   t.log('Commit a feature'); |   t.log('Commit a feature'); | ||||||
|   await gitCommits(['feat: Initial commit'], {cwd}); |   await gitCommits(['feat: Initial commit'], {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   ({stdout, exitCode} = await execa(cli, [], {env, cwd})); |   ({stdout, exitCode} = await execa(cli, [], {env, cwd, extendEnv: false})); | ||||||
|   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); |   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); | ||||||
|   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); |   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| @ -120,7 +127,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   let { |   let { | ||||||
|     'dist-tags': {latest: releasedVersion}, |     'dist-tags': {latest: releasedVersion}, | ||||||
|   } = await npmView(packageName, testEnv); |   } = await npmView(packageName, npmTestEnv); | ||||||
|   let head = await gitHead({cwd}); |   let head = await gitHead({cwd}); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
|   t.is(await gitTagHead(`v${version}`, {cwd}), head); |   t.is(await gitTagHead(`v${version}`, {cwd}), head); | ||||||
| @ -149,7 +156,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   t.log('Commit a fix'); |   t.log('Commit a fix'); | ||||||
|   await gitCommits(['fix: bar'], {cwd}); |   await gitCommits(['fix: bar'], {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   ({stdout, exitCode} = await execa(cli, [], {env, cwd})); |   ({stdout, exitCode} = await execa(cli, [], {env, cwd, extendEnv: false})); | ||||||
|   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); |   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); | ||||||
|   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); |   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| @ -161,7 +168,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   ({ |   ({ | ||||||
|     'dist-tags': {latest: releasedVersion}, |     'dist-tags': {latest: releasedVersion}, | ||||||
|   } = await npmView(packageName, testEnv)); |   } = await npmView(packageName, npmTestEnv)); | ||||||
|   head = await gitHead({cwd}); |   head = await gitHead({cwd}); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
|   t.is(await gitTagHead(`v${version}`, {cwd}), head); |   t.is(await gitTagHead(`v${version}`, {cwd}), head); | ||||||
| @ -190,7 +197,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   t.log('Commit a feature'); |   t.log('Commit a feature'); | ||||||
|   await gitCommits(['feat: baz'], {cwd}); |   await gitCommits(['feat: baz'], {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   ({stdout, exitCode} = await execa(cli, [], {env, cwd})); |   ({stdout, exitCode} = await execa(cli, [], {env, cwd, extendEnv: false})); | ||||||
|   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); |   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); | ||||||
|   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); |   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| @ -202,7 +209,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   ({ |   ({ | ||||||
|     'dist-tags': {latest: releasedVersion}, |     'dist-tags': {latest: releasedVersion}, | ||||||
|   } = await npmView(packageName, testEnv)); |   } = await npmView(packageName, npmTestEnv)); | ||||||
|   head = await gitHead({cwd}); |   head = await gitHead({cwd}); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
|   t.is(await gitTagHead(`v${version}`, {cwd}), head); |   t.is(await gitTagHead(`v${version}`, {cwd}), head); | ||||||
| @ -233,7 +240,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   await gitPush('origin', 'next', {cwd}); |   await gitPush('origin', 'next', {cwd}); | ||||||
|   await gitCommits(['feat: foo\n\n BREAKING CHANGE: bar'], {cwd}); |   await gitCommits(['feat: foo\n\n BREAKING CHANGE: bar'], {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   ({stdout, exitCode} = await execa(cli, [], {env: {...env, TRAVIS_BRANCH: 'next'}, cwd})); |   ({stdout, exitCode} = await execa(cli, [], {env: {...env, TRAVIS_BRANCH: 'next'}, cwd, extendEnv: false})); | ||||||
|   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); |   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); | ||||||
|   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); |   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| @ -245,7 +252,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   ({ |   ({ | ||||||
|     'dist-tags': {next: releasedVersion}, |     'dist-tags': {next: releasedVersion}, | ||||||
|   } = await npmView(packageName, testEnv)); |   } = await npmView(packageName, npmTestEnv)); | ||||||
|   head = await gitHead({cwd}); |   head = await gitHead({cwd}); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
|   t.is(await gitGetNote(`v${version}`, {cwd}), '{"channels":["next"]}'); |   t.is(await gitGetNote(`v${version}`, {cwd}), '{"channels":["next"]}'); | ||||||
| @ -283,7 +290,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   await merge('next', {cwd}); |   await merge('next', {cwd}); | ||||||
|   await gitPush('origin', 'master', {cwd}); |   await gitPush('origin', 'master', {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   ({stdout, exitCode} = await execa(cli, [], {env, cwd})); |   ({stdout, exitCode} = await execa(cli, [], {env, cwd, extendEnv: false})); | ||||||
|   t.regex(stdout, new RegExp(`Updated GitHub release: release-url/${version}`)); |   t.regex(stdout, new RegExp(`Updated GitHub release: release-url/${version}`)); | ||||||
|   t.regex(stdout, new RegExp(`Adding version ${version} to npm registry on dist-tag latest`)); |   t.regex(stdout, new RegExp(`Adding version ${version} to npm registry on dist-tag latest`)); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| @ -293,7 +300,7 @@ test('Release patch, minor and major versions', async (t) => { | |||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   ({ |   ({ | ||||||
|     'dist-tags': {latest: releasedVersion}, |     'dist-tags': {latest: releasedVersion}, | ||||||
|   } = await npmView(packageName, testEnv)); |   } = await npmView(packageName, npmTestEnv)); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
|   t.is(await gitGetNote(`v${version}`, {cwd}), '{"channels":["next",null]}'); |   t.is(await gitGetNote(`v${version}`, {cwd}), '{"channels":["next",null]}'); | ||||||
|   t.is(await gitTagHead(`v${version}`, {cwd}), await gitTagHead(`v${version}`, {cwd})); |   t.is(await gitTagHead(`v${version}`, {cwd}), await gitTagHead(`v${version}`, {cwd})); | ||||||
| @ -318,7 +325,7 @@ test('Exit with 1 if a plugin is not found', async (t) => { | |||||||
|     release: {analyzeCommits: 'non-existing-path', success: false, fail: false}, |     release: {analyzeCommits: 'non-existing-path', success: false, fail: false}, | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   const {exitCode, stderr} = await t.throwsAsync(execa(cli, [], {env, cwd})); |   const {exitCode, stderr} = await t.throwsAsync(execa(cli, [], {env, cwd, extendEnv: false})); | ||||||
|   t.is(exitCode, 1); |   t.is(exitCode, 1); | ||||||
|   t.regex(stderr, /Cannot find module/); |   t.regex(stderr, /Cannot find module/); | ||||||
| }); | }); | ||||||
| @ -336,7 +343,7 @@ test('Exit with 1 if a shareable config is not found', async (t) => { | |||||||
|     release: {extends: 'non-existing-path', success: false, fail: false}, |     release: {extends: 'non-existing-path', success: false, fail: false}, | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   const {exitCode, stderr} = await t.throwsAsync(execa(cli, [], {env, cwd})); |   const {exitCode, stderr} = await t.throwsAsync(execa(cli, [], {env, cwd, extendEnv: false})); | ||||||
|   t.is(exitCode, 1); |   t.is(exitCode, 1); | ||||||
|   t.regex(stderr, /Cannot find module/); |   t.regex(stderr, /Cannot find module/); | ||||||
| }); | }); | ||||||
| @ -357,7 +364,7 @@ test('Exit with 1 if a shareable config reference a not found plugin', async (t) | |||||||
|   }); |   }); | ||||||
|   await writeJson(path.resolve(cwd, 'shareable.json'), shareable); |   await writeJson(path.resolve(cwd, 'shareable.json'), shareable); | ||||||
| 
 | 
 | ||||||
|   const {exitCode, stderr} = await t.throwsAsync(execa(cli, [], {env, cwd})); |   const {exitCode, stderr} = await t.throwsAsync(execa(cli, [], {env, cwd, extendEnv: false})); | ||||||
|   t.is(exitCode, 1); |   t.is(exitCode, 1); | ||||||
|   t.regex(stderr, /Cannot find module/); |   t.regex(stderr, /Cannot find module/); | ||||||
| }); | }); | ||||||
| @ -387,7 +394,7 @@ test('Dry-run', async (t) => { | |||||||
|   t.log('Commit a feature'); |   t.log('Commit a feature'); | ||||||
|   await gitCommits(['feat: Initial commit'], {cwd}); |   await gitCommits(['feat: Initial commit'], {cwd}); | ||||||
|   t.log('$ semantic-release -d'); |   t.log('$ semantic-release -d'); | ||||||
|   const {stdout, exitCode} = await execa(cli, ['-d'], {env, cwd}); |   const {stdout, exitCode} = await execa(cli, ['-d'], {env, cwd, extendEnv: false}); | ||||||
|   t.regex(stdout, new RegExp(`There is no previous release, the next release version is ${version}`)); |   t.regex(stdout, new RegExp(`There is no previous release, the next release version is ${version}`)); | ||||||
|   t.regex(stdout, new RegExp(`Release note for version ${version}`)); |   t.regex(stdout, new RegExp(`Release note for version ${version}`)); | ||||||
|   t.regex(stdout, /Initial commit/); |   t.regex(stdout, /Initial commit/); | ||||||
| @ -400,7 +407,6 @@ test('Dry-run', async (t) => { | |||||||
| 
 | 
 | ||||||
| test('Allow local releases with "noCi" option', async (t) => { | test('Allow local releases with "noCi" option', async (t) => { | ||||||
|   const envNoCi = {...env}; |   const envNoCi = {...env}; | ||||||
|   delete envNoCi.TRAVIS; |  | ||||||
|   delete envNoCi.CI; |   delete envNoCi.CI; | ||||||
|   const packageName = 'test-no-ci'; |   const packageName = 'test-no-ci'; | ||||||
|   const owner = 'git'; |   const owner = 'git'; | ||||||
| @ -435,7 +441,7 @@ test('Allow local releases with "noCi" option', async (t) => { | |||||||
|   t.log('Commit a feature'); |   t.log('Commit a feature'); | ||||||
|   await gitCommits(['feat: Initial commit'], {cwd}); |   await gitCommits(['feat: Initial commit'], {cwd}); | ||||||
|   t.log('$ semantic-release --no-ci'); |   t.log('$ semantic-release --no-ci'); | ||||||
|   const {stdout, exitCode} = await execa(cli, ['--no-ci'], {env: envNoCi, cwd}); |   const {stdout, exitCode} = await execa(cli, ['--no-ci'], {env: envNoCi, cwd, extendEnv: false}); | ||||||
|   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); |   t.regex(stdout, new RegExp(`Published GitHub release: release-url/${version}`)); | ||||||
|   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); |   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| @ -444,7 +450,7 @@ test('Allow local releases with "noCi" option', async (t) => { | |||||||
|   t.is((await readJson(path.resolve(cwd, 'package.json'))).version, version); |   t.is((await readJson(path.resolve(cwd, 'package.json'))).version, version); | ||||||
| 
 | 
 | ||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   const {version: releasedVersion, gitHead: releasedGitHead} = await npmView(packageName, testEnv); |   const {version: releasedVersion, gitHead: releasedGitHead} = await npmView(packageName, npmTestEnv); | ||||||
| 
 | 
 | ||||||
|   const head = await gitHead({cwd}); |   const head = await gitHead({cwd}); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
| @ -488,7 +494,7 @@ test('Pass options via CLI arguments', async (t) => { | |||||||
|       false, |       false, | ||||||
|       '--debug', |       '--debug', | ||||||
|     ], |     ], | ||||||
|     {env, cwd} |     {env, cwd, extendEnv: false} | ||||||
|   ); |   ); | ||||||
|   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); |   t.regex(stdout, new RegExp(`Publishing version ${version} to npm registry`)); | ||||||
|   t.is(exitCode, 0); |   t.is(exitCode, 0); | ||||||
| @ -497,7 +503,7 @@ test('Pass options via CLI arguments', async (t) => { | |||||||
|   t.is((await readJson(path.resolve(cwd, 'package.json'))).version, version); |   t.is((await readJson(path.resolve(cwd, 'package.json'))).version, version); | ||||||
| 
 | 
 | ||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   const {version: releasedVersion, gitHead: releasedGitHead} = await npmView(packageName, testEnv); |   const {version: releasedVersion, gitHead: releasedGitHead} = await npmView(packageName, npmTestEnv); | ||||||
|   const head = await gitHead({cwd}); |   const head = await gitHead({cwd}); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
|   t.is(releasedGitHead, head); |   t.is(releasedGitHead, head); | ||||||
| @ -553,7 +559,7 @@ test('Run via JS API', async (t) => { | |||||||
|   t.is((await readJson(path.resolve(cwd, 'package.json'))).version, version); |   t.is((await readJson(path.resolve(cwd, 'package.json'))).version, version); | ||||||
| 
 | 
 | ||||||
|   // Retrieve the published package from the registry and check version and gitHead
 |   // Retrieve the published package from the registry and check version and gitHead
 | ||||||
|   const {version: releasedVersion, gitHead: releasedGitHead} = await npmView(packageName, testEnv); |   const {version: releasedVersion, gitHead: releasedGitHead} = await npmView(packageName, npmTestEnv); | ||||||
|   const head = await gitHead({cwd}); |   const head = await gitHead({cwd}); | ||||||
|   t.is(releasedVersion, version); |   t.is(releasedVersion, version); | ||||||
|   t.is(releasedGitHead, head); |   t.is(releasedGitHead, head); | ||||||
| @ -582,7 +588,7 @@ test('Log unexpected errors from plugins and exit with 1', async (t) => { | |||||||
|   t.log('Commit a feature'); |   t.log('Commit a feature'); | ||||||
|   await gitCommits(['feat: Initial commit'], {cwd}); |   await gitCommits(['feat: Initial commit'], {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   const {stderr, exitCode} = await execa(cli, [], {env, cwd, reject: false}); |   const {stderr, exitCode} = await execa(cli, [], {env, cwd, reject: false, extendEnv: false}); | ||||||
|   // Verify the type and message are logged
 |   // Verify the type and message are logged
 | ||||||
|   t.regex(stderr, /Error: a/); |   t.regex(stderr, /Error: a/); | ||||||
|   // Verify the the stacktrace is logged
 |   // Verify the the stacktrace is logged
 | ||||||
| @ -609,7 +615,7 @@ test('Log errors inheriting SemanticReleaseError and exit with 1', async (t) => | |||||||
|   t.log('Commit a feature'); |   t.log('Commit a feature'); | ||||||
|   await gitCommits(['feat: Initial commit'], {cwd}); |   await gitCommits(['feat: Initial commit'], {cwd}); | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   const {stderr, exitCode} = await execa(cli, [], {env, cwd, reject: false}); |   const {stderr, exitCode} = await execa(cli, [], {env, cwd, reject: false, extendEnv: false}); | ||||||
|   // Verify the type and message are logged
 |   // Verify the type and message are logged
 | ||||||
|   t.regex(stderr, /EINHERITED Inherited error/); |   t.regex(stderr, /EINHERITED Inherited error/); | ||||||
|   t.is(exitCode, 1); |   t.is(exitCode, 1); | ||||||
| @ -630,7 +636,7 @@ test('Exit with 1 if missing permission to push to the remote repository', async | |||||||
|   const {stderr, exitCode} = await execa( |   const {stderr, exitCode} = await execa( | ||||||
|     cli, |     cli, | ||||||
|     ['--repository-url', 'http://user:wrong_pass@localhost:2080/git/unauthorized.git'], |     ['--repository-url', 'http://user:wrong_pass@localhost:2080/git/unauthorized.git'], | ||||||
|     {env: {...env, GH_TOKEN: 'user:wrong_pass'}, cwd, reject: false} |     {env: {...env, GH_TOKEN: 'user:wrong_pass'}, cwd, reject: false, extendEnv: false} | ||||||
|   ); |   ); | ||||||
|   // Verify the type and message are logged
 |   // Verify the type and message are logged
 | ||||||
|   t.regex(stderr, /EGITNOPERMISSION/); |   t.regex(stderr, /EGITNOPERMISSION/); | ||||||
| @ -650,7 +656,7 @@ test('Hide sensitive environment variable values from the logs', async (t) => { | |||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   t.log('$ semantic-release'); |   t.log('$ semantic-release'); | ||||||
|   const {stdout, stderr} = await execa(cli, [], {env: {...env, MY_TOKEN: 'secret token'}, cwd, reject: false}); |   const {stdout, stderr} = await execa(cli, [], {env: {...env, MY_TOKEN: 'secret token'}, cwd, reject: false, extendEnv: false}); | ||||||
| 
 | 
 | ||||||
|   t.regex(stdout, new RegExp(`Console: Exposing token ${escapeRegExp(SECRET_REPLACEMENT)}`)); |   t.regex(stdout, new RegExp(`Console: Exposing token ${escapeRegExp(SECRET_REPLACEMENT)}`)); | ||||||
|   t.regex(stdout, new RegExp(`Log: Exposing token ${escapeRegExp(SECRET_REPLACEMENT)}`)); |   t.regex(stdout, new RegExp(`Log: Exposing token ${escapeRegExp(SECRET_REPLACEMENT)}`)); | ||||||
| @ -680,7 +686,7 @@ test('Use the valid git credentials when multiple are provided', async (t) => { | |||||||
| 
 | 
 | ||||||
| test('Use the repository URL as is if none of the given git credentials are valid', async (t) => { | test('Use the repository URL as is if none of the given git credentials are valid', async (t) => { | ||||||
|   const {cwd} = await gitbox.createRepo('test-invalid-auth'); |   const {cwd} = await gitbox.createRepo('test-invalid-auth'); | ||||||
|   const dummyUrl = 'http://toto@localhost:2080/git/test-auth.git'; |   const dummyUrl = 'http://toto@localhost:2080/git/test-invalid-auth.git'; | ||||||
| 
 | 
 | ||||||
|   t.is( |   t.is( | ||||||
|     await getAuthUrl({ |     await getAuthUrl({ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user