Compare commits

...
87 Commits
Author SHA1 Message Date
Matt TraviandGitHub bd4725b041 Merge pull request #2972 from semantic-release/stable-plugins
fix(deps): upgraded `release-notes-generator` and `commit-analyzer` plugins to stable versions
2023-09-21 07:32:08 -05:00
Matt Travi 041e4f7e37 fix(deps): upgraded release-notes-generator and commit-analyzer plugins to stable versions
follow up to #2934
2023-09-20 16:50:51 -05:00
1c8d848a4f ci(action): update github/codeql-action action to v2.21.8 (#2969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-19 11:13:27 +00:00
Matt TraviandGitHub 2822fbee5d Merge pull request #2963 from semantic-release/always-test 2023-09-18 07:33:49 -05:00
2a67c65328 chore(deps): lock file maintenance (#2967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-18 00:47:38 +00:00
Matt Travi 87f0c12cf6 ci(matrix): prevent skipping the test job when test_matrix fails
for #semantic-release/.github#19
2023-09-17 10:23:40 -05:00
Matt TraviandGitHub 11788ed5dc Merge pull request #2934 from semantic-release/beta 2023-09-16 14:03:51 -05:00
Matt Travi b93bef4eea feat(node-versions): raised the minimum supported node version w/in the v20 range to v20.6.1
because of a known issue with v20.6.0 that we might as well avoid since we are restricting the
supported ranges at this point anyway: https://github.com/nodejs/node/issues/49497

BREAKING CHANGE: the minimum supported version for the v20 range of node has been raised slightly to
v20.6.1 to avoid a known node bug
2023-09-16 13:43:05 -05:00
Matt Travi 6604153812 Merge branch 'master' of github.com:semantic-release/semantic-release into beta 2023-09-16 11:59:52 -05:00
Matt Travi e623cc642a feat(node-versions): raised the minimum node v20 requirement to v20.6
for auto-registered loader support

BREAKING CHANGE: the minimum supported node version in the v20 major range is now v20.6
2023-09-16 11:52:49 -05:00
42f7b8269e chore(deps): update dependency testdouble to v3.19.0 (#2961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-16 13:52:55 +00:00
1017e1aac2 fix(deps): update dependency aggregate-error to v5 (#2956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-15 23:41:01 -05:00
Matt Travi a23b71890b fix(deps): upgraded to the latest version of the npm plugin with npm v10 2023-09-15 16:06:44 -05:00
Matt Travi fb850ff26d Merge branch 'master' of github.com:semantic-release/semantic-release into beta 2023-09-15 15:49:37 -05:00
Matt Travi b9f294d179 feat(node-versions): raised the minimum required node version to v18.17 and dropped v19 support
npm v20 requires v18.17

BREAKING CHANGE: node v18.17 is now the minimum supported node version and support for v19 has been dropped
2023-09-15 15:39:49 -05:00
Matt Travi 03a687b3ea fix(deps): updated to the latest beta of the commit analyzer plugin 2023-09-15 13:23:18 -05:00
86a639dee9 ci(action): update github/codeql-action action to v2.21.7 (#2958)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-14 17:19:37 +00:00
da5620171e chore(deps): update dependency sinon to v16 (#2954)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-13 22:55:16 +00:00
89d51e7db7 ci(action): update github/codeql-action action to v2.21.6 (#2953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-13 18:13:04 +00:00
Matt Travi de8e4e05e9 fix(deps): updated to the latest betas of the commit-analyzer and release-notes-generator plugins 2023-09-11 20:55:11 -05:00
0fd3bb8b3a chore(deps): lock file maintenance (#2948)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 10:47:23 -07:00
c39513f24d ci(action): update actions/upload-artifact action to v3.1.3 (#2943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-06 22:46:55 +00:00
Simon SeyockandGitHub 6a5d96102d docs(plugins): add @terrestris/maven-semantic-release (#2939) 2023-09-05 21:21:41 +00:00
19c09653fe ci(action): update actions/checkout action to v4 (#2938)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 14:53:20 +00:00
32a248077f chore(deps): lock file maintenance (#2936)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 01:53:23 +00:00
Matt Travi 72ab317bb0 feat: defined exports for the package
BREAKING CHANGE: exports prevents access to internal files, but they arent intended for public use anyway
2023-09-01 21:08:13 -05:00
Matt Travi 07a79ea7e9 feat(conventional-changelog-presets): supported new preset format
BREAKING CHANGE: the new preset format is a breaking change when compared to the previous preset format. updating to support the new format means that the old preset format is no longer supported. update your preset to the latest version to maintain compatibility
2023-09-01 17:23:14 -05:00
0d92579e13 chore(deps): update dependency prettier to v3.0.3 (#2930)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-29 15:21:15 +00:00
cb6613e2ee ci(action): update github/codeql-action action to v2.21.5 (#2928)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-28 21:53:52 +00:00
9e10e44fed chore(deps): lock file maintenance (#2923)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-28 02:40:27 +00:00
d3c1338eac chore(deps): update dependency p-retry to v6 (#2921)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 18:48:28 +00:00
01cb041e1d ci(action): update actions/checkout action to v3.6.0 (#2919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 16:25:08 +00:00
Matt TraviandGitHub 4c95c97d8f fix(types): included the definitions file in the published package (#2920) 2023-08-24 11:20:48 -05:00
5e08c4d95a ci(action): update actions/checkout digest to f43a0e5 (#2918)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 14:42:30 +00:00
Matt TraviandGitHub c84d5d39e5 Merge pull request #2904 from semantic-release/gitlab-provenance 2023-08-23 21:17:58 -05:00
Sibin GrašićandGitHub c21a1ac793 feat: Added TypeScript definitions (#2916) 2023-08-23 20:27:22 -05:00
915f36cda7 chore(deps): lock file maintenance (#2915)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-21 01:30:59 +00:00
eba86ac8e5 fix(deps): update dependency hosted-git-info to v7 (#2908)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-19 20:37:27 -05:00
7bc21fcdc7 fix(deps): update dependency execa to v8 (#2914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-19 17:20:09 -05:00
79bca752a7 ci(action): update actions/setup-node digest to 5e21ff4 (#2912)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-17 15:12:45 +00:00
0e5e41f460 chore(deps): update dependency nock to v13.3.3 (#2911)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-16 23:05:46 +00:00
c41d55c25b chore(deps): update dependency prettier to v3.0.2 (#2909)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-15 16:35:49 +00:00
eddbc53172 ci(action): update github/codeql-action action to v2.21.4 (#2907)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-14 16:54:11 +00:00
2b28ba98d2 ci(action): update actions/setup-node digest to bea5baf (#2906)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-14 12:16:26 +00:00
9878b316bc chore(deps): lock file maintenance (#2905)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-14 01:45:14 +00:00
Matt Travi e40eecdce0 docs(gitlab): highlighted that GitLab CI is now a supported CI provider for provenance 2023-08-11 15:40:18 -05:00
3bb968c87d ci(action): update github/codeql-action action to v2.21.3 (#2902)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-08 14:42:59 +00:00
1f54c5a9d9 chore(deps): update dependency prettier to v3.0.1 (#2898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 06:47:36 +00:00
fd6b46e1b1 chore(deps): lock file maintenance (#2894)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-31 00:16:10 +00:00
07b12ceeb9 ci(action): update github/codeql-action action to v2.21.2 (#2892)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-28 15:56:04 +00:00
a5dd6dad3a ci(action): update github/codeql-action action to v2.21.1 (#2889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-26 22:31:04 +00:00
cb8a95b3d3 chore(deps): update dependency c8 to v8.0.1 (#2888)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-25 17:35:45 +00:00
24b34fe9df chore(deps): lock file maintenance (#2886)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-24 02:26:27 +00:00
19e3963acc ci(action): update github/codeql-action action to v2.21.0 (#2878)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-19 14:09:23 +00:00
2659253cfb chore(deps): lock file maintenance (#2876)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-17 02:28:07 +00:00
Matt Travi f8a41a9af4 chore(license): changed line wrapping hoping to trigger github to recognize the license 2023-07-15 22:32:10 -05:00
078c86814c ci(action): update github/codeql-action action to v2.20.4 (#2873)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-14 16:09:09 +00:00
c8c7d121e6 chore(deps): update dependency nock to v13.3.2 (#2872)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-13 23:29:44 +00:00
1c30a57287 chore(deps): update dependency tempy to v3.1.0 (#2869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-10 21:01:24 +00:00
3e6be5fff1 ci(action): update actions/setup-node digest to e33196f (#2866)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-10 10:13:10 -07:00
b81b9ee522 ci(action): update github/codeql-action action to v2.20.3 (#2867)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-10 06:48:42 +00:00
ba4a25e3f2 chore(deps): lock file maintenance (#2868)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-10 01:02:15 +00:00
Justin PoehneltandGitHub 4a1378d6c7 docs(plugins): change to new repo and package name (#2865)
chore: change to new repo and package name

https://www.npmjs.com/package/@google/semantic-release-replace-plugin now points to `semantic-release-replace-plugin'.
2023-07-05 20:45:48 -07:00
Matt TraviandGitHub af5f0e30b5 Merge pull request #2863 from semantic-release/renovate/prettier-3.x 2023-07-05 12:10:14 -05:00
Matt Travi 6fd45e865f chore(prettier): ignored formatting change for v3 upgrade from git blame 2023-07-05 11:10:14 -05:00
Matt Travi 272af21052 style(prettier): adjusted to match prettier v3 expectations 2023-07-05 11:07:42 -05:00
renovate[bot]andGitHub 738cefc802 chore(deps): update dependency prettier to v3 2023-07-05 13:07:13 +00:00
81e1ca4dd1 ci(action): update github/codeql-action action to v2.20.2 (#2861)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-05 07:01:48 +00:00
a2c7303d62 chore(deps): lock file maintenance (#2859)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-05 03:37:46 +00:00
70996e0181 fix(deps): update dependency read-pkg-up to v10 (#2862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-04 20:03:53 -05:00
40dbf5633f ci(action): update actions/checkout action to v3.5.3 (#2852)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-29 07:50:42 +00:00
3159c977fc chore(deps): lock file maintenance (#2849)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-29 03:23:24 +00:00
41e7027b2d ci(action): update actions/upload-artifact action to v3.1.2 (#2851)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-29 02:47:04 +00:00
Tijmen van de MeentandGitHub e4229f9c68 fix: get correct version if prerelease branch shares version with ... (#2416) 2023-06-28 14:38:35 -07:00
9514e20e7b ci(action): update ossf/scorecard-action action to v2.2.0 (#2854)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-26 17:57:07 -05:00
5fcdc27e75 ci(action): update github/codeql-action action to v2.20.1 (#2853)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-26 09:26:04 +00:00
1260d3a971 ci(action): pin dependencies (#2850)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-26 04:50:50 +00:00
Matt TraviandGitHub 9ebabe1266 ci(ossf-scorecard): added workflow calculating scorecard metrics (#2848) 2023-06-25 21:44:40 -05:00
Matt TraviandGitHub e39ae90ae2 test(integration): properly waited for the image pulls to complete (#2842) 2023-06-25 17:51:31 -07:00
39d2a05014 chore(deps): update dependency sinon to v15.2.0 (#2844)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-20 13:15:55 -07:00
45eb11ae9c chore(deps): update dependency c8 to v8 (#2833)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-19 11:31:31 -07:00
71e805d90c chore(deps): update dependency ava to v5.3.1 (#2839)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-19 06:33:31 +00:00
9f660ff885 chore(deps): lock file maintenance (#2841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-19 03:58:31 +00:00
01e85df88a chore(deps): update dependency sinon to v15.1.2 (#2832)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-12 20:39:33 +00:00
caa0d50d52 chore(deps): lock file maintenance (#2831)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-12 04:32:51 +00:00
452e1fa4b9 fix(deps): update dependency marked to v5
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-09 16:54:36 -07:00
94e773d915 ci(action): update actions/checkout digest to c85c95e
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-09 16:25:38 -07:00
20 changed files with 1972 additions and 7980 deletions
+3 -1
View File
@@ -1,2 +1,4 @@
# style: prettier (#2670)
b06c9bbe4c6be121c5561b356d8c465c1cadffba
b06c9bbe4c6be121c5561b356d8c465c1cadffba
# style: upgraded prettier to v3 (#2863)
272af210523804de782b3076f05e56bcb4aeeb8f
+2 -2
View File
@@ -18,8 +18,8 @@ jobs:
name: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
- uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
with:
cache: npm
node-version: lts/*
+36
View File
@@ -0,0 +1,36 @@
name: OpenSSF Scorecard
"on":
schedule:
- cron: 31 2 * * 1
push:
branches:
- master
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
security-events: write
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
with:
persist-credentials: false
- name: Run analysis
uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0
with:
results_file: results.sarif
results_format: sarif
publish_results: true
- name: Upload artifact
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: SARIF file
path: results.sarif
retention-days: 5
- name: Upload to code-scanning
uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8
with:
sarif_file: results.sarif
+18 -6
View File
@@ -15,23 +15,28 @@ on:
permissions:
contents: read # to fetch code (actions/checkout)
env:
FORCE_COLOR: 1
NPM_CONFIG_COLOR: always
jobs:
test_matrix:
strategy:
matrix:
node-version:
- 18.0.0
- 19
- 18.17.0
- 20.6.1
- 20
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
- 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@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
with:
node-version: ${{ matrix.node-version }}
cache: npm
@@ -45,12 +50,19 @@ jobs:
test:
runs-on: ubuntu-latest
needs: test_matrix
if: always()
steps:
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # 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
- name: Some matrix version failed
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
+1
View File
@@ -0,0 +1 @@
v18
+2 -2
View File
@@ -9,8 +9,8 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+3
View File
@@ -7,6 +7,9 @@
<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">
</a>
<a href="https://securityscorecards.dev/viewer/?uri=github.com/semantic-release/semantic-release">
<img alt="OpenSSF Scorecard" src="https://api.securityscorecards.dev/projects/github.com/semantic-release/semantic-release/badge">
</a>
<a href="#badge">
<img alt="semantic-release: angular" src="https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release">
</a>
+6 -1
View File
@@ -84,6 +84,11 @@
- `verifyRelease`: Checks and warns (does not error by default) if the version numbers found on maven central and within the Git project differ by quite a bit
- `prepare`: Changes the version number in the `pom.xml` (or all `pom.xml` files in maven projects with multiple `pom.xml` files) and optionally creates a commit with this version number and pushes it to `master`
- `publish`: Runs `mvn deploy` to deploy to maven central and optionally will update to next snapshot version and merge changes to development branch
- [maven-semantic-release](https://github.com/terrestris/maven-semantic-release) (alternative version)
- `verifyConditions`: Verifies that the `mvn` command exists.
- `prepare`: Changes version number in `pom.xml` and optionally in all child modules.
- `publish`: Runs one of the mvn targets `deploy`, `package jib:build` or `deploy jib:build`.
- `success`: Optionally sets new snapshot version and commits it.
- [semantic-release-ado](https://github.com/lluchmk/semantic-release-ado)
- `prepare`: Stores the version number as an Azure DevOps pipeline variable available to downstream steps on the job
- [gradle-semantic-release](https://github.com/KengoTODA/gradle-semantic-release-plugin)
@@ -107,7 +112,7 @@
- `verifyConditions`: Verify the presence and the validity of the authentication and the assets option configuration.
- `publish`: Publish a Gitea release, optionally uploading file assets.
- `addChannel`: Update a Gitea release's pre-release field.
- [@google/semantic-release-replace-plugin](https://github.com/google/semantic-release-replace-plugin)
- [semantic-release-replace-plugin](https://github.com/jpoehnelt/semantic-release-replace-plugin)
- `prepare`: Replace version strings in files using regex and glob.
- [semantic-release-rubygem](https://github.com/Gusto/semantic-release-rubygem)
- `verifyConditions`: Locate and validate a `.gemspec` file, locate and validate a `lib/**/version.rb` file, verify the presence of the `GEM_HOST_API_KEY` environment variable, and create a credentials file with the API key.
@@ -6,6 +6,11 @@ The [Authentication](../../usage/ci-configuration.md#authentication) environment
**Note**: Make sure to configure your release branch as [protected](https://docs.gitlab.com/ce/user/project/protected_branches.html) in order for the CI/CD build to access the protected variables.
## npm provenance
Since GitLab CI is a [supported provider](https://docs.npmjs.com/generating-provenance-statements#provenance-limitations) for [npm provenance](https://docs.npmjs.com/generating-provenance-statements), it is recommended to enable this to increase supply-chain security for your npm packages.
Find more detail about configuring npm to publish with provenance through semantic-release [in the documentation for our npm plugin](https://github.com/semantic-release/npm#npm-provenance).
## Node project configuration
GitLab CI supports [Pipelines](https://docs.gitlab.com/ee/ci/pipelines.html) allowing to test on multiple Node versions and publishing a release only when all test pass.
Vendored
+711
View File
@@ -0,0 +1,711 @@
declare interface AggregateError extends Error {
errors: any[];
}
declare module "semantic-release" {
import { Signale } from "signale";
export interface EnvCi {
/**
* Boolean, true if the environment is a CI environment
*/
isCi: boolean;
/**
* Commit hash
*/
commit: string;
/**
* Current branch name
*/
branch: string;
}
/**
* Base context used in every semantic release step.
*/
export interface BaseContext {
/**
* stdout for semantic-release process
*/
stdout: NodeJS.WriteStream;
/**
* stderr for semantic-release process
*/
stderr: NodeJS.WriteStream;
/**
* Signale console loger instance.
*
* Has error, log and success methods.
*/
logger: Signale<"error" | "log" | "success">;
}
/**
* Context used for the verify conditions step.
*/
export interface VerifyConditionsContext extends BaseContext {
/**
* The current working directory to use. It should be configured to
* the root of the Git repository to release from.
*
* It allows to run semantic-release from a specific path without
* having to change the local process cwd with process.chdir().
*
* @default process.cwd
*/
cwd?: string | undefined;
/**
* The environment variables to use.
*
* It allows to run semantic-release with specific environment
* variables without having to modify the local process.env.
*
* @default process.env
*/
env: Record<string, string>;
/**
* Information about the CI environment.
*/
envCi: EnvCi;
/**
* Information of the current branch
*/
branch: BranchObject;
/**
* Information on branches
*/
branches: ReadonlyArray<BranchObject>;
}
/**
* Context used for the analyze commits step.
*/
export interface AnalyzeCommitsContext extends VerifyConditionsContext {
/**
* List of commits taken into account when determining the new version.
*/
commits: ReadonlyArray<Commit>;
/**
* List of releases
*/
releases: ReadonlyArray<Release>;
/**
* Last release
*/
lastRelease: LastRelease;
}
/**
* Context used for the verify release step.
*/
export interface VerifyReleaseContext extends AnalyzeCommitsContext {
/**
* The next release.
*/
nextRelease: NextRelease;
}
/**
* Context used for the generate notes step.
*/
export type GenerateNotesContext = VerifyReleaseContext;
/**
* Context used for the add channel step.
*/
export type AddChannelContext = VerifyReleaseContext;
/**
* Context used for the prepare step.
*/
export type PrepareContext = VerifyReleaseContext;
/**
* Context used for the publish step.
*/
export type PublishContext = VerifyReleaseContext;
/**
* Context used for the success step.
*/
export type SuccessContext = VerifyReleaseContext;
export interface FailContext extends BaseContext {
/**
* Errors that occurred during the release process.
*/
errors: AggregateError;
}
export interface Commit {
/**
* The commit abbreviated and full hash.
*/
commit: {
/**
* The commit hash.
*/
long: string;
/**
* The commit abbreviated hash.
*/
short: string;
};
/**
* The commit abbreviated and full tree hash.
*/
tree: {
/**
* The commit tree hash.
*/
long: string;
/**
* The commit abbreviated tree hash.
*/
short: string;
};
/**
* The commit author information.
*/
author: {
/**
* The commit author name.
*/
name: string;
/**
* The commit author email.
*/
email: string;
/**
* The commit author date.
*/
short: string;
};
/**
* The committer information.
*/
committer: {
/**
* The committer name.
*/
name: string;
/**
* The committer email.
*/
email: string;
/**
* The committer date.
*/
short: string;
};
/**
* The commit subject.
*/
subject: string;
/**
* The commit body.
*/
body: string;
/**
* The commit full message (subject and body).
*/
message: string;
/**
* The commit hash.
*/
hash: string;
/**
* The committer date.
*/
committerDate: string;
}
export interface BranchObject {
/**
* The name of git branch.
*
* A `name` is required for all types of branch. It can be defined as a
* [glob](https://github.com/micromatch/micromatch#matching-features)
* in which case the definition will be expanded to one per matching
* branch existing in the repository.
*
* If `name` doesn't match any branch existing in the repository, the
* definition will be ignored. For example, the default configuration
* includes the definition `next` and `next-major` which will become
* active only when the branches `next` and/or `next-major` are
* created in the repository.
*/
name: string;
/**
* The distribution channel on which to publish releases from this
* branch.
*
* If this field is set to `false`, then the branch will be released
* on the default distribution channel (for example the `@latest`
* [dist-tag](https://docs.npmjs.com/cli/dist-tag) for npm). This is
* also the default behavior for the first
* [release branch](https://semantic-release.gitbook.io/semantic-release/usage/workflow-configuration#release-branches)
* if the channel property is not set.
*
* For all other branches, if the channel property is not set, then the
* channel name will be the same as the branch name.
*
* The value of `channel`, if defined as a string, is generated with
* [Lodash template](https://lodash.com/docs#template) with the
* variable `name` set to the branch name.
*
* For example `{name: 'next', channel: 'channel-${name}'}` will be
* expanded to `{name: 'next', channel: 'channel-next'}`.
*/
channel?: string | false | undefined;
/**
* The range of [semantic versions](https://semver.org/) to support on
* this branch.
*
* A `range` only applies to maintenance branches and must be formatted
* like `N.N.x` or `N.x` (`N` is a number). If no range is specified
* but the `name` is formatted as a range, then the branch will be
* considered a maintenance branch and the `name` value will be used
* for the `range`.
*
* Required for maintenance branches, unless `name` is formatted like
* `N.N.x` or `N.x` (`N` is a number).
*/
range?: string | undefined;
/**
* The pre-release identifier to append to [semantic versions](https://semver.org/)
* released from this branch.
*
* A `prerelease` property applies only to pre-release branches and
* the `prerelease` value must be valid per the [Semantic Versioning
* Specification](https://semver.org/#spec-item-9). It will determine
* the name of versions. For example if `prerelease` is set to
* `"beta"`, the version will be formatted like `2.0.0-beta.1`,
* `2.0.0-beta.2`, etc.
*
* The value of `prerelease`, if defined as a string, is generated with
* [Lodash template](https://lodash.com/docs#template) with the
* variable `name` set to the name of the branch.
*
* If the `prerelease property is set to `true` then the name of the
* branch is used as the pre-release identifier.
*
* Required for pre-release branches.
*/
prerelease?: string | boolean | undefined;
}
/**
* Specifies a git branch holding commits to analyze and code to release.
*
* Each branch may be defined either by a string or an object. Specifying
* a string is a shortcut for specifying that string as the `name` field,
* for example `"master"` expands to `{name: "master"}`.
*/
export type BranchSpec = string | BranchObject;
/**
* A semver release type.
* See https://github.com/semantic-release/commit-analyzer/blob/master/lib/default-release-types.js
*/
export type ReleaseType = "prerelease" | "prepatch" | "patch" | "preminor" | "minor" | "premajor" | "major";
/**
* Details of a release published by a publish plugin.
*/
export interface Release {
/**
* The release name, only if set by the corresponding publish plugin.
*/
name?: string | undefined;
/**
* The release URL, only if set by the corresponding publish plugin.
*/
url?: string | undefined;
/**
* The semver export type of the release.
*/
type: ReleaseType;
/**
* The version of the release.
*/
version: string;
/**
* The sha of the last commit being part of the release.
*/
gitHead: string;
/**
* The Git tag associated with the release.
*/
gitTag: string;
/**
* The release notes for the release.
*/
notes: string;
/**
* The name of the plugin that published the release.
*/
pluginName: string;
}
export interface LastRelease {
/**
* The version name of the release.
*/
version: string;
/**
* The Git tag of the release.
*/
gitTag: string;
/**
* List of channels the release was published to.
*/
channels: string[];
/**
* The Git checksum of the last commit of the release.
*/
gitHead: string;
/**
* The Release name
*/
name: string;
}
export interface NextRelease extends Omit<LastRelease, "channels"> {
/**
* The semver export type of the release.
*/
type: ReleaseType;
/**
* The release channel of the release.
*/
channel: string;
/**
* The release notes of the next release.
*/
notes?: string | undefined;
}
/**
* Specifies a plugin to use.
*
* The plugin is specified by its module name.
*
* To pass options to a plugin, specify an array containing the plugin module
* name and an options object.
*/
export type PluginSpec<T = any> = string | [string, T];
/**
* semantic-release options, after normalization and defaults have been
* applied.
*/
export interface GlobalConfig extends Options {
/**
* The branches on which releases should happen. By default
* **semantic-release** will release:
*
* * regular releases to the default distribution channel from the
* branch `master`
* * regular releases to a distribution channel matching the branch
* name from any existing branch with a name matching a maintenance
* release range (`N.N.x` or `N.x.x` or `N.x` with `N` being a
* number)
* * regular releases to the `next` distribution channel from the
* branch `next` if it exists
* * regular releases to the `next-major` distribution channel from
* the branch `next-major` if it exists.
* * prereleases to the `beta` distribution channel from the branch
* `beta` if it exists
* * prereleases to the `alpha` distribution channel from the branch
* `alpha` if it exists
*
* **Note**: If your repository does not have a release branch, then
* **semantic-release** will fail with an `ERELEASEBRANCHES` error
* message. If you are using the default configuration, you can fix
* this error by pushing a `master` branch.
*
* **Note**: Once **semantic-release** is configured, any user with the
* permission to push commits on one of those branches will be able to
* publish a release. It is recommended to protect those branches, for
* example with [GitHub protected branches](https://help.github.com/articles/about-protected-branches).
*
* See [Workflow configuration](https://semantic-release.gitbook.io/semantic-release/usage/workflow-configuration#workflow-configuration)
* for more details.
*/
branches: ReadonlyArray<BranchSpec> | BranchSpec;
/**
* The git repository URL.
*
* Any valid git url format is supported (see
* [git protocols](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols))
*
* Default: `repository` property in `package.json`, or git origin url.
*/
repositoryUrl: string;
/**
* The git tag format used by **semantic-release** to identify
* releases. The tag name is generated with [Lodash template](https://lodash.com/docs#template)
* and will be compiled with the `version` variable.
*
* **Note**: The `tagFormat` must contain the `version` variable
* exactly once and compile to a
* [valid git reference](https://git-scm.com/docs/git-check-ref-format#_description).
*/
tagFormat: string;
/**
* Define the list of plugins to use. Plugins will run in series, in
* the order defined, for each [step](https://semantic-release.gitbook.io/semantic-release/#release-steps)
* if they implement it.
*
* Plugins configuration can be defined by wrapping the name and an
* options object in an array.
*
* See [Plugins configuration](https://semantic-release.gitbook.io/semantic-release/usage/plugins#plugins)
* for more details.
*
* Default: `[
* "@semantic-release/commit-analyzer",
* "@semantic-release/release-notes-generator",
* "@semantic-release/npm",
* "@semantic-release/github"
* ]`
*/
plugins: ReadonlyArray<PluginSpec>;
}
/** semantic-release configuration specific for API usage. */
export interface Config {
/**
* The current working directory to use. It should be configured to
* the root of the Git repository to release from.
*
* It allows to run semantic-release from a specific path without
* having to change the local process cwd with process.chdir().
*
* @default process.cwd
*/
cwd?: string | undefined;
/**
* The environment variables to use.
*
* It allows to run semantic-release with specific environment
* variables without having to modify the local process.env.
*
* @default process.env
*/
env?: Record<string, any> | undefined;
/**
* The writable stream used to log information.
*
* It allows to configure semantic-release to write logs to a specific
* stream rather than the local process.stdout.
*
* @default process.stdout
*/
stdout?: NodeJS.WriteStream | undefined;
/**
* The writable stream used to log errors.
*
* It allows to configure semantic-release to write errors to a
* specific stream rather than the local process.stderr.
*
* @default process.stderr
*/
stderr?: NodeJS.WriteStream | undefined;
}
/**
* semantic-release options.
*
* Can be used to set any core option or plugin options.
* Each option will take precedence over options configured in the
* configuration file and shareable configurations.
*/
export interface Options {
/**
* List of modules or file paths containing a
* [shareable configuration](https://semantic-release.gitbook.io/semantic-release/usage/shareable-configurations).
* If multiple shareable configurations are set, they will be imported
* in the order defined with each configuration option taking
* precedence over the options defined in a previous shareable
* configuration.
*
* **Note**: Options defined via CLI arguments or in the configuration
* file will take precedence over the ones defined in any shareable
* configuration.
*/
extends?: ReadonlyArray<string> | string | undefined;
/**
* The branches on which releases should happen. By default
* **semantic-release** will release:
*
* * regular releases to the default distribution channel from the
* branch `master`
* * regular releases to a distribution channel matching the branch
* name from any existing branch with a name matching a maintenance
* release range (`N.N.x` or `N.x.x` or `N.x` with `N` being a
* number)
* * regular releases to the `next` distribution channel from the
* branch `next` if it exists
* * regular releases to the `next-major` distribution channel from
* the branch `next-major` if it exists.
* * prereleases to the `beta` distribution channel from the branch
* `beta` if it exists
* * prereleases to the `alpha` distribution channel from the branch
* `alpha` if it exists
*
* **Note**: If your repository does not have a release branch, then
* **semantic-release** will fail with an `ERELEASEBRANCHES` error
* message. If you are using the default configuration, you can fix
* this error by pushing a `master` branch.
*
* **Note**: Once **semantic-release** is configured, any user with the
* permission to push commits on one of those branches will be able to
* publish a release. It is recommended to protect those branches, for
* example with [GitHub protected branches](https://help.github.com/articles/about-protected-branches).
*
* See [Workflow configuration](https://semantic-release.gitbook.io/semantic-release/usage/workflow-configuration#workflow-configuration)
* for more details.
*/
branches?: ReadonlyArray<BranchSpec> | BranchSpec | undefined;
/**
* The git repository URL.
*
* Any valid git url format is supported (see
* [git protocols](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols))
*
* Default: `repository` property in `package.json`, or git origin url.
*/
repositoryUrl?: string | undefined;
/**
* The git tag format used by **semantic-release** to identify
* releases. The tag name is generated with [Lodash template](https://lodash.com/docs#template)
* and will be compiled with the `version` variable.
*
* **Note**: The `tagFormat` must contain the `version` variable
* exactly once and compile to a
* [valid git reference](https://git-scm.com/docs/git-check-ref-format#_description).
*/
tagFormat?: string | undefined;
/**
* Define the list of plugins to use. Plugins will run in series, in
* the order defined, for each [step](https://semantic-release.gitbook.io/semantic-release/#release-steps)
* if they implement it.
*
* Plugins configuration can be defined by wrapping the name and an
* options object in an array.
*
* See [Plugins configuration](https://semantic-release.gitbook.io/semantic-release/usage/plugins#plugins)
* for more details.
*
* Default: `[
* "@semantic-release/commit-analyzer",
* "@semantic-release/release-notes-generator",
* "@semantic-release/npm",
* "@semantic-release/github"
* ]`
*/
plugins?: ReadonlyArray<PluginSpec> | undefined;
/**
* Dry-run mode, skip publishing, print next version and release notes.
*/
dryRun?: boolean | undefined;
/**
* Set to false to skip Continuous Integration environment verifications.
* This allows for making releases from a local machine.
*/
ci?: boolean | undefined;
/**
* Any other options supported by plugins.
*/
[name: string]: any;
}
/**
* An object with details of the release if a release was published, or
* false if no release was published.
*/
export type Result =
| false
| {
/**
* Information related to the last release found.
*/
lastRelease: LastRelease;
/**
* The list of commits included in the new release.
*/
commits: Commit[];
/**
* Information related to the newly published release.
*/
nextRelease: NextRelease;
/**
* The list of releases published, one release per publish plugin.
*/
releases: Release[];
};
/**
* Run semantic-release and returns a Promise that resolves to a Result
* object.
* @async
*/
export default function (options: Options, environment?: Config): Promise<Result>;
}
+5 -1
View File
@@ -30,7 +30,11 @@ export default ({ branch, options: { tagFormat } }, { before } = {}) => {
const [{ version, gitTag, channels } = {}] = branch.tags
.filter(
(tag) =>
((branch.type === "prerelease" && tag.channels.some((channel) => isSameChannel(branch.channel, channel))) ||
((branch.type === "prerelease" &&
tag.channels.some((channel) => isSameChannel(branch.channel, channel)) &&
semver
.parse(tag.version)
.prerelease.includes(branch.prerelease === true ? branch.name : branch.prerelease)) ||
!semver.prerelease(tag.version)) &&
(isUndefined(before) || semver.lt(tag.version, before))
)
+1058 -7930
View File
File diff suppressed because it is too large Load Diff
+22 -18
View File
@@ -8,6 +8,7 @@
"files": [
"test/**/*.test.js"
],
"failFast": true,
"nodeArguments": [
"--loader=testdouble",
"--no-warnings"
@@ -26,29 +27,29 @@
"Matt Travi <npm@travi.org> (https://matt.travi.org/)"
],
"dependencies": {
"@semantic-release/commit-analyzer": "^10.0.0",
"@semantic-release/commit-analyzer": "^11.0.0",
"@semantic-release/error": "^4.0.0",
"@semantic-release/github": "^9.0.0",
"@semantic-release/npm": "^10.0.2",
"@semantic-release/release-notes-generator": "^11.0.0",
"aggregate-error": "^4.0.1",
"@semantic-release/npm": "^11.0.0",
"@semantic-release/release-notes-generator": "^12.0.0",
"aggregate-error": "^5.0.0",
"cosmiconfig": "^8.0.0",
"debug": "^4.0.0",
"env-ci": "^9.0.0",
"execa": "^7.0.0",
"execa": "^8.0.0",
"figures": "^5.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": "^6.0.0",
"hosted-git-info": "^7.0.0",
"lodash-es": "^4.17.21",
"marked": "^4.1.0",
"marked": "^5.0.0",
"marked-terminal": "^5.1.1",
"micromatch": "^4.0.2",
"p-each-series": "^3.0.0",
"p-reduce": "^3.0.0",
"read-pkg-up": "^9.1.0",
"read-pkg-up": "^10.0.0",
"resolve-from": "^5.0.0",
"semver": "^7.3.2",
"semver-diff": "^4.0.0",
@@ -56,8 +57,8 @@
"yargs": "^17.5.1"
},
"devDependencies": {
"ava": "5.3.0",
"c8": "7.14.0",
"ava": "5.3.1",
"c8": "8.0.1",
"clear-module": "4.1.2",
"codecov": "3.8.3",
"dockerode": "3.3.5",
@@ -66,21 +67,23 @@
"got": "13.0.0",
"js-yaml": "4.1.0",
"mockserver-client": "5.15.0",
"nock": "13.3.1",
"p-retry": "5.1.2",
"prettier": "2.8.8",
"sinon": "15.1.0",
"nock": "13.3.3",
"p-retry": "6.0.0",
"prettier": "3.0.3",
"sinon": "16.0.0",
"stream-buffers": "3.0.2",
"tempy": "3.0.0",
"testdouble": "3.18.0"
"tempy": "3.1.0",
"testdouble": "3.19.0"
},
"engines": {
"node": ">=18"
"node": "^18.17 || >=20.6.1"
},
"exports": "./index.js",
"files": [
"bin",
"docs",
"lib",
"index.d.ts",
"index.js",
"cli.js"
],
@@ -97,7 +100,8 @@
"version"
],
"license": "MIT",
"main": "index.js",
"main": "./index.js",
"types": "index.d.ts",
"c8": {
"include": [
"lib/**/*.js",
+37
View File
@@ -43,6 +43,43 @@ test("Get the highest prerelease valid tag, ignoring other tags from other prere
});
});
test("Get the correct prerelease tag, when other prereleases share the same git HEAD", (t) => {
const testConfig = {
branch: {
name: "alpha",
prerelease: "alpha",
channel: "alpha",
tags: [
{ version: "1.0.0-beta.1", gitTag: "v1.0.0-beta.1", gitHead: "v1.0.0-beta.1", channels: ["beta"] },
{ version: "1.0.0-beta.2", gitTag: "v1.0.0-beta.2", gitHead: "v1.0.0-alpha.1", channels: ["alpha", "beta"] },
{ version: "1.0.0-alpha.1", gitTag: "v1.0.0-alpha.1", gitHead: "v1.0.0-alpha.1", channels: ["alpha", "beta"] },
],
type: "prerelease",
},
options: { tagFormat: `v\${version}`, debug: true },
};
const firstResult = getLastRelease(testConfig);
t.deepEqual(firstResult, {
version: "1.0.0-alpha.1",
gitTag: "v1.0.0-alpha.1",
name: "v1.0.0-alpha.1",
gitHead: "v1.0.0-alpha.1",
channels: ["alpha", "beta"],
});
testConfig.branch.prerelease = true;
const secondResult = getLastRelease(testConfig);
t.deepEqual(secondResult, {
version: "1.0.0-alpha.1",
gitTag: "v1.0.0-alpha.1",
name: "v1.0.0-alpha.1",
gitHead: "v1.0.0-alpha.1",
channels: ["alpha", "beta"],
});
});
test("Return empty object if no valid tag is found", (t) => {
const result = getLastRelease({
branch: {
+21
View File
@@ -275,3 +275,24 @@ test("Increase version for release on prerelease branch when there is no regular
"1.0.0-beta.2"
);
});
test("Increase patch when previous version shares HEAD with other releases", (t) => {
t.is(
getNextVersion({
branch: {
name: "alpha",
type: "prerelease",
prerelease: "alpha",
tags: [
{ gitTag: "v1.0.0-beta.1", version: "1.0.0-beta.1", channels: ["beta"] },
{ gitTag: "v1.0.0-beta.2", version: "1.0.0-beta.2", channels: ["alpha", "beta"] },
{ gitTag: "v1.0.0-alpha.1", version: "1.0.0-alpha.1", channels: ["alpha", "beta"] },
],
},
nextRelease: { type: "patch", channel: "alpha" },
lastRelease: { version: "v1.0.0-alpha.1", channels: ["alpha", "beta"] },
logger: t.context.logger,
}),
"1.0.0-alpha.2"
);
});
+2 -4
View File
@@ -43,7 +43,7 @@ export async function initGit(withRemote) {
*
* @param {Boolean} withRemote `true` to create a shallow clone of a bare repository.
* @param {String} [branch='master'] The branch to initialize.
* @return {String} The path of the clone if `withRemote` is `true`, the path of the repository otherwise.
* @return {Promise<Object>} The path of the clone if `withRemote` is `true`, the path of the repository otherwise.
*/
export async function gitRepo(withRemote, branch = "master") {
let { cwd, repositoryUrl } = await initGit(withRemote);
@@ -90,9 +90,7 @@ export async function gitCommits(messages, execaOptions) {
await pEachSeries(
messages,
async (message) =>
(
await execa("git", ["commit", "-m", message, "--allow-empty", "--no-gpg-sign"], execaOptions)
).stdout
(await execa("git", ["commit", "-m", message, "--allow-empty", "--no-gpg-sign"], execaOptions)).stdout
);
return (await gitGetCommits(undefined, execaOptions)).slice(0, messages.length);
}
+12 -4
View File
@@ -1,5 +1,4 @@
import Docker from "dockerode";
import getStream from "get-stream";
import pRetry from "p-retry";
import { gitShallowClone, initBareRepo } from "./git-utils.js";
@@ -15,11 +14,20 @@ let container;
export const gitCredential = `${GIT_USERNAME}:${GIT_PASSWORD}`;
/**
* Download the `gitbox` Docker image, create a new container and start it.
* Download the `gitbox` Docker image
*/
export function pull() {
return docker.pull(IMAGE).then((stream) => {
return new Promise((resolve, reject) => {
docker.modem.followProgress(stream, (err, res) => (err ? reject(err) : resolve(res)));
});
});
}
/**
* create a new container and start it.
*/
export async function start() {
await getStream(await docker.pull(IMAGE));
container = await docker.createContainer({
Tty: true,
Image: IMAGE,
+12 -4
View File
@@ -1,5 +1,4 @@
import Docker from "dockerode";
import getStream from "get-stream";
import got from "got";
import pRetry from "p-retry";
import { mockServerClient } from "mockserver-client";
@@ -11,11 +10,20 @@ const docker = new Docker();
let container;
/**
* Download the `mockserver` Docker image, create a new container and start it.
* Download the `mockserver` Docker image,
*/
export function pull() {
return docker.pull(IMAGE).then((stream) => {
return new Promise((resolve, reject) => {
docker.modem.followProgress(stream, (err, res) => (err ? reject(err) : resolve(res)));
});
});
}
/**
* create a new container and start it.
*/
export async function start() {
await getStream(await docker.pull(IMAGE));
container = await docker.createContainer({
Tty: true,
Image: IMAGE,
+12 -4
View File
@@ -2,7 +2,6 @@ import path, { dirname } from "node:path";
import { fileURLToPath } from "node:url";
import { setTimeout } from "node:timers/promises";
import Docker from "dockerode";
import getStream from "get-stream";
import got from "got";
import pRetry from "p-retry";
@@ -17,11 +16,20 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
let container, npmToken;
/**
* Download the `npm-registry-docker` Docker image, create a new container and start it.
* Download the `npm-registry-docker` Docker image
*/
export function pull() {
return docker.pull(IMAGE).then((stream) => {
return new Promise((resolve, reject) => {
docker.modem.followProgress(stream, (err, res) => (err ? reject(err) : resolve(res)));
});
});
}
/**
* create a new container and start it.
*/
export async function start() {
await getStream(await docker.pull(IMAGE));
container = await docker.createContainer({
Tty: true,
Image: IMAGE,
+4 -3
View File
@@ -35,7 +35,7 @@ let env;
// Environment variables used only for the local npm command used to do verification
const npmTestEnv = {
...process.env,
...processEnvWithoutGitHubActionsVariables,
...npmRegistry.authEnv(),
npm_config_registry: npmRegistry.url,
};
@@ -47,6 +47,7 @@ const pluginLogEnv = path.resolve("./test/fixtures/plugin-log-env");
const pluginEsmNamedExports = path.resolve("./test/fixtures/plugin-esm-named-exports");
test.before(async () => {
await Promise.all([gitbox.pull(), npmRegistry.pull(), mockServer.pull()]);
await Promise.all([gitbox.start(), npmRegistry.start(), mockServer.start()]);
env = {
@@ -515,8 +516,8 @@ test("Pass options via CLI arguments", async (t) => {
});
test("Run via JS API", async (t) => {
td.replace("../lib/logger", { log: () => {}, error: () => {}, stdout: () => {} });
td.replace("env-ci", () => ({ isCi: true, branch: "master", isPr: false }));
await td.replaceEsm("../lib/logger", null, { log: () => {}, error: () => {}, stdout: () => {} });
await td.replaceEsm("env-ci", null, () => ({ isCi: true, branch: "master", isPr: false }));
const semanticRelease = (await import("../index.js")).default;
const packageName = "test-js-api";
const owner = "git";