From a578226d34427d2d1aaf53d5ed0bca1f93c5be49 Mon Sep 17 00:00:00 2001 From: Elliot DeNolf Date: Mon, 16 Oct 2023 22:47:27 -0400 Subject: [PATCH] ci: rework release-it script --- .release-it.json | 22 -------------- .release-it.pre.js | 16 +++++++++++ .release-it.pre.json | 25 ---------------- packages/payload/.release-it.js | 51 +++++++++++++++++++++++++++++++++ packages/payload/package.json | 3 +- 5 files changed, 68 insertions(+), 49 deletions(-) delete mode 100644 .release-it.json create mode 100644 .release-it.pre.js delete mode 100644 .release-it.pre.json create mode 100644 packages/payload/.release-it.js diff --git a/.release-it.json b/.release-it.json deleted file mode 100644 index f6bdc6333..000000000 --- a/.release-it.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "verbose": true, - "git": { - "commitMessage": "chore(release): v${version}", - "requireCleanWorkingDir": true - }, - "github": { - "release": true - }, - "npm": { - "skipChecks": true - }, - "hooks": { - "before:init": ["pnpm i", "pnpm clean", "pnpm test"] - }, - "plugins": { - "@release-it/conventional-changelog": { - "preset": "angular", - "infile": "CHANGELOG.md" - } - } -} diff --git a/.release-it.pre.js b/.release-it.pre.js new file mode 100644 index 000000000..c2d36f055 --- /dev/null +++ b/.release-it.pre.js @@ -0,0 +1,16 @@ +module.exports = { + verbose: true, + git: { + requireCleanWorkingDir: false, + commit: false, + push: false, + tag: false, + }, + npm: { + skipChecks: true, + tag: 'beta', + }, + hooks: { + 'before:init': ['pnpm install', 'pnpm clean', 'pnpm build'], + }, +} diff --git a/.release-it.pre.json b/.release-it.pre.json deleted file mode 100644 index 646ff2384..000000000 --- a/.release-it.pre.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "verbose": true, - "git": { - "requireCleanWorkingDir": false, - "commit": false, - "push": false, - "tag": false - }, - "github": { - "release": true - }, - "npm": { - "skipChecks": true, - "tag": "canary" - }, - "hooks": { - "before:init": ["pnpm i", "pnpm clean", "pnpm test"] - }, - "plugins": { - "@release-it/conventional-changelog": { - "preset": "angular", - "infile": "CHANGELOG.md" - } - } -} diff --git a/packages/payload/.release-it.js b/packages/payload/.release-it.js new file mode 100644 index 000000000..4dd3459cf --- /dev/null +++ b/packages/payload/.release-it.js @@ -0,0 +1,51 @@ +module.exports = { + verbose: true, + git: { + commitMessage: 'chore(release): v${version}', + requireCleanWorkingDir: false, + tagMatch: 'v*', // payload is tagged normally, other packages are tagged with a prefix + }, + github: { + release: true, + }, + npm: { + skipChecks: true, + }, + hooks: { + 'before:init': ['pnpm install', 'pnpm clean', 'pnpm test'], + }, + plugins: { + '@release-it/conventional-changelog': { + infile: '../../CHANGELOG.md', + preset: { + name: 'conventionalcommits', + types: [ + { type: 'feat', section: 'Features' }, + { type: 'feature', section: 'Features' }, + { type: 'fix', section: 'Bug Fixes' }, + { type: 'docs', section: 'Documentation' }, + ], + }, + writerOpts: { + commitGroupsSort: (a, b) => { + const groupOrder = ['Features', 'Bug Fixes', 'Documentation'] + return groupOrder.indexOf(a.title) - groupOrder.indexOf(b.title) + }, + + // Scoped commits at the end, alphabetical sort + commitsSort: (a, b) => { + if (a.scope || b.scope) { + if (!a.scope) return -1 + if (!b.scope) return 1 + return a.scope === b.scope + ? a.subject.localeCompare(b.subject) + : a.scope.localeCompare(b.scope) + } + + // Alphabetical sort + return a.subject.localeCompare(b.subject) + }, + }, + }, + }, +} diff --git a/packages/payload/package.json b/packages/payload/package.json index f76971d05..4d8e3db5f 100644 --- a/packages/payload/package.json +++ b/packages/payload/package.json @@ -40,8 +40,7 @@ "lint": "eslint \"src/**/*.ts\"", "prepublishOnly": "pnpm clean && pnpm build", "pretest": "pnpm build", - "release:beta": "release-it pre --preReleaseId=beta --npm.tag=beta --config .release-it.pre.json", - "release:canary": "release-it pre --preReleaseId=canary --npm.tag=canary --config .release-it.pre.json", + "release:beta": "release-it pre --preReleaseId=beta --npm.tag=beta --config .release-it.pre.js", "release:major": "release-it major", "release:minor": "release-it minor", "release:patch": "release-it patch",