Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4ed18d184 | ||
|
|
039145ab3e | ||
|
|
75280d28d8 |
@@ -18,7 +18,7 @@ jobs:
|
||||
name: release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
cache: npm
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
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@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.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@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
|
||||
with:
|
||||
name: SARIF file
|
||||
path: results.sarif
|
||||
retention-days: 5
|
||||
- name: Upload to code-scanning
|
||||
uses: github/codeql-action/upload-sarif@f6e388ebf0efc915c6c5b165b019ee61a6746a38 # v2.20.1
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- 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 }}
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test_matrix
|
||||
steps:
|
||||
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
|
||||
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
|
||||
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
node-version: lts/*
|
||||
|
||||
@@ -7,9 +7,6 @@
|
||||
<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>
|
||||
|
||||
@@ -30,11 +30,7 @@ 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)) &&
|
||||
semver
|
||||
.parse(tag.version)
|
||||
.prerelease.includes(branch.prerelease === true ? branch.name : branch.prerelease)) ||
|
||||
((branch.type === "prerelease" && tag.channels.some((channel) => isSameChannel(branch.channel, channel))) ||
|
||||
!semver.prerelease(tag.version)) &&
|
||||
(isUndefined(before) || semver.lt(tag.version, before))
|
||||
)
|
||||
|
||||
Generated
+1085
-603
File diff suppressed because it is too large
Load Diff
+8
-8
@@ -26,9 +26,9 @@
|
||||
"Matt Travi <npm@travi.org> (https://matt.travi.org/)"
|
||||
],
|
||||
"dependencies": {
|
||||
"@semantic-release/commit-analyzer": "^10.0.0",
|
||||
"@semantic-release/error": "^4.0.0",
|
||||
"@semantic-release/github": "^9.0.0",
|
||||
"@semantic-release/commit-analyzer": "^10.0.0-beta.1",
|
||||
"@semantic-release/error": "^3.0.0",
|
||||
"@semantic-release/github": "9.0.0-beta.2",
|
||||
"@semantic-release/npm": "^10.0.2",
|
||||
"@semantic-release/release-notes-generator": "^11.0.0",
|
||||
"aggregate-error": "^4.0.1",
|
||||
@@ -43,7 +43,7 @@
|
||||
"hook-std": "^3.0.0",
|
||||
"hosted-git-info": "^6.0.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"marked": "^5.0.0",
|
||||
"marked": "^4.1.0",
|
||||
"marked-terminal": "^5.1.1",
|
||||
"micromatch": "^4.0.2",
|
||||
"p-each-series": "^3.0.0",
|
||||
@@ -56,20 +56,20 @@
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "5.3.1",
|
||||
"c8": "8.0.0",
|
||||
"ava": "5.2.0",
|
||||
"c8": "7.14.0",
|
||||
"clear-module": "4.1.2",
|
||||
"codecov": "3.8.3",
|
||||
"dockerode": "3.3.5",
|
||||
"file-url": "4.0.0",
|
||||
"fs-extra": "11.1.1",
|
||||
"got": "13.0.0",
|
||||
"got": "12.6.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.2.0",
|
||||
"sinon": "15.1.0",
|
||||
"stream-buffers": "3.0.2",
|
||||
"tempy": "3.0.0",
|
||||
"testdouble": "3.18.0"
|
||||
|
||||
@@ -43,43 +43,6 @@ 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: {
|
||||
|
||||
@@ -275,24 +275,3 @@ 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"
|
||||
);
|
||||
});
|
||||
|
||||
+4
-12
@@ -1,4 +1,5 @@
|
||||
import Docker from "dockerode";
|
||||
import getStream from "get-stream";
|
||||
import pRetry from "p-retry";
|
||||
import { gitShallowClone, initBareRepo } from "./git-utils.js";
|
||||
|
||||
@@ -14,20 +15,11 @@ let container;
|
||||
export const gitCredential = `${GIT_USERNAME}:${GIT_PASSWORD}`;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* Download the `gitbox` Docker image, 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,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import Docker from "dockerode";
|
||||
import getStream from "get-stream";
|
||||
import got from "got";
|
||||
import pRetry from "p-retry";
|
||||
import { mockServerClient } from "mockserver-client";
|
||||
@@ -10,20 +11,11 @@ const docker = new Docker();
|
||||
let container;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* Download the `mockserver` Docker image, 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,
|
||||
|
||||
@@ -2,6 +2,7 @@ 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";
|
||||
|
||||
@@ -16,20 +17,11 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
let container, npmToken;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* Download the `npm-registry-docker` Docker image, 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
-13
@@ -1853,19 +1853,10 @@ test.serial("Throw an Error if plugin returns an unexpected value", async (t) =>
|
||||
await td.replaceEsm("../lib/get-logger.js", null, () => t.context.logger);
|
||||
await td.replaceEsm("env-ci", null, () => ({ isCi: true, branch: "master", isPr: false }));
|
||||
const semanticRelease = (await import("../index.js")).default;
|
||||
|
||||
let error;
|
||||
try {
|
||||
await semanticRelease(options, {
|
||||
cwd,
|
||||
env: {},
|
||||
stdout: new WritableStreamBuffer(),
|
||||
stderr: new WritableStreamBuffer(),
|
||||
});
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
t.is(error.code, "EANALYZECOMMITSOUTPUT");
|
||||
const error = await t.throwsAsync(
|
||||
semanticRelease(options, { cwd, env: {}, stdout: new WritableStreamBuffer(), stderr: new WritableStreamBuffer() }),
|
||||
{ instanceOf: SemanticReleaseError }
|
||||
);
|
||||
t.regex(error.details, /string/);
|
||||
});
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ 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 = {
|
||||
|
||||
Reference in New Issue
Block a user