From 229588be6961d020af2f1e9557199bfb69a32ae7 Mon Sep 17 00:00:00 2001
From: Patrick Kollitsch <davidsneighbourdev+gh@gmail.com>
Date: Fri, 15 May 2026 05:33:58 +0000
Subject: [PATCH] build(fix): update release setup
---
.vscode/settings.json | 2
.github/workflows/release.yml | 47 +++++++++++++++
package.json | 5 +
.release-it.publish.ts | 51 +----------------
.release-it.prepare.ts | 17 ++---
5 files changed, 60 insertions(+), 62 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..ebe0afa
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,47 @@
+name: Release
+
+on:
+ workflow_dispatch:
+
+permissions:
+ contents: write
+ id-token: write
+
+concurrency:
+ group: release-main
+ cancel-in-progress: false
+
+jobs:
+ release:
+ name: Release from main
+ runs-on: ubuntu-latest
+
+ environment:
+ name: production
+
+ if: github.ref == 'refs/heads/main'
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
+ with:
+ fetch-depth: 0
+ persist-credentials: true
+
+ - name: Setup Node.js
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
+ with:
+ node-version: 22
+ registry-url: "https://registry.npmjs.org"
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: Run checks
+ run: npm test
+
+ - name: Release
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+ run: npm run release
diff --git a/.release-it.ts b/.release-it.prepare.ts
similarity index 87%
rename from .release-it.ts
rename to .release-it.prepare.ts
index caecc39..d8d819b 100644
--- a/.release-it.ts
+++ b/.release-it.prepare.ts
@@ -33,16 +33,16 @@
const branch = getCurrentBranch();
const isPreRelease = hasPreReleaseFlag(process.argv);
-if (isPreRelease && branch !== "development") {
+if (isPreRelease && branch !== "staging") {
console.error(
- `Pre-releases are only allowed from "development". Current branch: "${branch}".`,
+ `Pre-releases are only allowed from "staging". Current branch: "${branch}".`,
);
process.exit(1);
}
-if (!isPreRelease && branch !== "main") {
+if (!isPreRelease && branch !== "maintenance" && branch !== "staging") {
console.error(
- `Stable releases are only allowed from "main". Current branch: "${branch}".`,
+ `Stable releases are only allowed from "maintenance" and "staging". Current branch: "${branch}".`,
);
process.exit(1);
}
@@ -56,16 +56,11 @@
commit: true,
commitMessage: "chore(release): v${version}",
commitArgs: ["--no-verify"],
- tag: true,
- tagName: "v${version}",
+ tag: false,
push: true,
- pushArgs: ["--follow-tags"],
},
github: {
- release: true,
- releaseName: "v${version}",
- skipChecks: true,
- tokenRef: "GITHUB_ANANKE_TOKEN_ADMIN_PRIVATE",
+ release: false,
},
npm: {
publish: false,
diff --git a/.release-it.ts b/.release-it.publish.ts
similarity index 66%
copy from .release-it.ts
copy to .release-it.publish.ts
index caecc39..b095b01 100644
--- a/.release-it.ts
+++ b/.release-it.publish.ts
@@ -1,4 +1,3 @@
-import { execSync } from "node:child_process";
import type { Config } from "release-it";
interface ConventionalCommitLike {
@@ -6,59 +5,15 @@
notes?: unknown[];
}
-function getCurrentBranch(): string {
- try {
- return execSync("git rev-parse --abbrev-ref HEAD", {
- encoding: "utf8",
- stdio: ["ignore", "pipe", "pipe"],
- }).trim();
- } catch (error) {
- console.error("Failed to determine the current Git branch.");
- console.error(error);
- process.exit(1);
- }
-}
-
-function hasPreReleaseFlag(argv: string[]): boolean {
- return argv.some((argument) => {
- return (
- argument === "--preRelease" ||
- argument.startsWith("--preRelease=") ||
- argument === "--preReleaseId" ||
- argument.startsWith("--preReleaseId=")
- );
- });
-}
-
-const branch = getCurrentBranch();
-const isPreRelease = hasPreReleaseFlag(process.argv);
-
-if (isPreRelease && branch !== "development") {
- console.error(
- `Pre-releases are only allowed from "development". Current branch: "${branch}".`,
- );
- process.exit(1);
-}
-
-if (!isPreRelease && branch !== "main") {
- console.error(
- `Stable releases are only allowed from "main". Current branch: "${branch}".`,
- );
- process.exit(1);
-}
-
const config: Config = {
git: {
+ requireBranch: "main",
requireCleanWorkingDir: true,
requireUpstream: true,
- requireCommits: true,
- requireBranch: branch,
- commit: true,
- commitMessage: "chore(release): v${version}",
- commitArgs: ["--no-verify"],
+ commit: false,
tag: true,
- tagName: "v${version}",
push: true,
+ tagName: "v${version}",
pushArgs: ["--follow-tags"],
},
github: {
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6600c92..577fc08 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -23,7 +23,7 @@
},
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
- "package.json": "package-lock.json, netlify.toml, .lintstagedrc.js, .release-it.ts, .markdownlint*, .nvmrc, lychee.toml, tsconfig.json, .coderabbit.yaml",
+ "package.json": "package-lock.json, netlify.toml, .lintstagedrc.js, .release-it.*.ts, .markdownlint*, .nvmrc, lychee.toml, tsconfig.json, .coderabbit.yaml",
"theme.toml": "go.mod, go.sum",
"README.md": "CHANGELOG.md, LICENSE.md, CONTRIBUTING.md, RELEASES.md, DESIGN.md"
},
diff --git a/package.json b/package.json
index e64ab67..e62dfaa 100644
--- a/package.json
+++ b/package.json
@@ -56,8 +56,9 @@
"lint:markdown": "markdownlint-cli2",
"lint:markdown:fix": "markdownlint-cli2 --fix",
"prepare": "simple-git-hooks install",
- "release": "release-it --config .release-it.ts",
- "release:pre": "release-it --preRelease=prerelease --config .release-it.ts",
+ "release:pre": "release-it --preRelease=prerelease --config .release-it.publish.ts --ci",
+ "release:prepare": "release-it --config .release-it.prepare.ts",
+ "release": "release-it --config .release-it.publish.ts --ci",
"server": "hugo server --environment documentation",
"test": "node scripts/test-hugo-quickstart.ts",
"test:quickstart": "node scripts/test-hugo-quickstart.ts",
--
Gitblit v1.10.0