mirror of
https://github.com/jcreek/Tech-Radar-Editor.git
synced 2026-07-13 19:13:44 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 69215cd115 | |||
| 83f8a95546 |
@@ -33,6 +33,9 @@ jobs:
|
|||||||
node-version: 22
|
node-version: 22
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
|
- name: Verify release baseline tags
|
||||||
|
run: pnpm release:verify-baseline
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
@@ -55,4 +58,5 @@ jobs:
|
|||||||
- name: Publish packages
|
- name: Publish packages
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
NPM_CONFIG_PROVENANCE: true
|
||||||
run: pnpm release
|
run: pnpm release
|
||||||
|
|||||||
+2
-1
@@ -7,7 +7,8 @@
|
|||||||
"commitlint": "commitlint",
|
"commitlint": "commitlint",
|
||||||
"dev": "pnpm --filter tech-radar-editor dev",
|
"dev": "pnpm --filter tech-radar-editor dev",
|
||||||
"release": "pnpm -r --workspace-concurrency=1 --filter './packages/*' exec semantic-release",
|
"release": "pnpm -r --workspace-concurrency=1 --filter './packages/*' exec semantic-release",
|
||||||
"release:dry-run": "pnpm -r --workspace-concurrency=1 --filter './packages/*' exec semantic-release --dry-run"
|
"release:dry-run": "pnpm -r --workspace-concurrency=1 --filter './packages/*' exec semantic-release --dry-run",
|
||||||
|
"release:verify-baseline": "node scripts/verify-release-baseline.mjs"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
},
|
},
|
||||||
"author": "Josh Creek",
|
"author": "Josh Creek",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
|
"publishConfig": {
|
||||||
|
"provenance": true,
|
||||||
|
"registry": "https://registry.npmjs.org/"
|
||||||
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"extends": [
|
"extends": [
|
||||||
"../../release.config.cjs",
|
"../../release.config.cjs",
|
||||||
|
|||||||
@@ -13,6 +13,10 @@
|
|||||||
},
|
},
|
||||||
"author": "Josh Creek",
|
"author": "Josh Creek",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
|
"publishConfig": {
|
||||||
|
"provenance": true,
|
||||||
|
"registry": "https://registry.npmjs.org/"
|
||||||
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"extends": [
|
"extends": [
|
||||||
"../../release.config.cjs",
|
"../../release.config.cjs",
|
||||||
|
|||||||
@@ -20,6 +20,10 @@
|
|||||||
],
|
],
|
||||||
"author": "Josh Creek",
|
"author": "Josh Creek",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
|
"publishConfig": {
|
||||||
|
"provenance": true,
|
||||||
|
"registry": "https://registry.npmjs.org/"
|
||||||
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"extends": [
|
"extends": [
|
||||||
"../../release.config.cjs",
|
"../../release.config.cjs",
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import { readdirSync, readFileSync } from 'node:fs';
|
||||||
|
import { join } from 'node:path';
|
||||||
|
import { execFileSync } from 'node:child_process';
|
||||||
|
|
||||||
|
const packagesDir = join(process.cwd(), 'packages');
|
||||||
|
|
||||||
|
const packageDirs = readdirSync(packagesDir, { withFileTypes: true })
|
||||||
|
.filter((entry) => entry.isDirectory())
|
||||||
|
.map((entry) => join(packagesDir, entry.name));
|
||||||
|
|
||||||
|
const missingTags = [];
|
||||||
|
|
||||||
|
for (const packageDir of packageDirs) {
|
||||||
|
const manifestPath = join(packageDir, 'package.json');
|
||||||
|
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
|
||||||
|
|
||||||
|
if (manifest.private) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const expectedTag = `${manifest.name}-v${manifest.version}`;
|
||||||
|
const existingTag = execFileSync('git', ['tag', '--list', expectedTag], {
|
||||||
|
cwd: process.cwd(),
|
||||||
|
encoding: 'utf8',
|
||||||
|
}).trim();
|
||||||
|
|
||||||
|
if (!existingTag) {
|
||||||
|
missingTags.push({
|
||||||
|
name: manifest.name,
|
||||||
|
version: manifest.version,
|
||||||
|
tag: expectedTag,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (missingTags.length > 0) {
|
||||||
|
console.error('Release baseline is incomplete.');
|
||||||
|
console.error('Create tags for the versions that were already published before semantic-release was enabled:');
|
||||||
|
|
||||||
|
for (const pkg of missingTags) {
|
||||||
|
console.error(`- ${pkg.name}: expected tag ${pkg.tag}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.error('');
|
||||||
|
console.error('Example commands:');
|
||||||
|
|
||||||
|
for (const pkg of missingTags) {
|
||||||
|
console.error(` git tag ${pkg.tag}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.error(' git push origin --tags');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Release baseline tags are present for all publishable packages.');
|
||||||
Reference in New Issue
Block a user