From a4cafa50cf3c5525d733f3f15eae2124ad37a3fd Mon Sep 17 00:00:00 2001 From: Michael Cousins Date: Tue, 30 Apr 2024 09:15:12 -0400 Subject: [PATCH] ci(release): use `semantic-release` directly, add release preview script Closes #356 --- .github/workflows/release.yml | 15 ++------------- CONTRIBUTING.md | 17 +++++++++++++++-- package.json | 13 ++++++------- release.config.js | 13 +++++++++++++ scripts/preview-release | 17 +++++++++++++++++ 5 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 release.config.js create mode 100755 scripts/preview-release diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be47107..6e39484 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,24 +74,13 @@ jobs: - name: ⎔ Setup node uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 20 - name: 📥 Download deps run: npm install --no-package-lock - name: 🚀 Release - uses: cycjimmy/semantic-release-action@v2 - with: - semantic_version: 17 - branches: | - [ - '+([0-9])?(.{+([0-9]),x}).x', - 'main', - 'next', - 'next-major', - {name: 'beta', prerelease: true}, - {name: 'alpha', prerelease: true} - ] + run: npm run release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d5f35da..67faa59 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,9 +9,22 @@ ## Release -The module is released automatically from the `main` branch using [semantic-release-action][]. Version bumps and change logs are generated from the commit messages. +The module is released automatically from the `main` and `next` branches using [semantic-release][]. Version bumps and change logs are generated from the commit messages. -[semantic-release-action]: https://github.com/cycjimmy/semantic-release-action +[semantic-release]: https://github.com/semantic-release/semantic-release + +### Preview release + +If you would like to preview the release from a given branch, and... + +- You have push access to the repository +- The branch exists in GitHub + +...you can preview the next release using: + +```shell +npm run release:preview +``` ## Development setup diff --git a/package.json b/package.json index b7182e5..345d8e8 100644 --- a/package.json +++ b/package.json @@ -46,12 +46,7 @@ "end-to-end", "e2e" ], - "files": [ - "src", - "types", - "!*.test-d.ts", - "!__tests__" - ], + "files": ["src", "types", "!*.test-d.ts", "!__tests__"], "scripts": { "toc": "doctoc README.md", "lint": "prettier . --check && eslint .", @@ -71,7 +66,9 @@ "types": "svelte-check", "validate": "npm-run-all test:vitest:* types", "contributors:add": "all-contributors add", - "contributors:generate": "all-contributors generate" + "contributors:generate": "all-contributors generate", + "release": "semantic-release", + "release:preview": "./scripts/preview-release" }, "peerDependencies": { "svelte": "^3 || ^4 || ^5", @@ -90,6 +87,7 @@ "@testing-library/dom": "^10.0.0" }, "devDependencies": { + "@semantic-release/exec": "^6.0.3", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@testing-library/jest-dom": "^6.3.0", "@testing-library/user-event": "^14.5.2", @@ -114,6 +112,7 @@ "npm-run-all": "^4.1.5", "prettier": "3.2.5", "prettier-plugin-svelte": "3.2.3", + "semantic-release": "^23.0.8", "svelte": "^3 || ^4 || ^5", "svelte-check": "^3.6.3", "svelte-jester": "^3.0.0", diff --git a/release.config.js b/release.config.js new file mode 100644 index 0000000..553151f --- /dev/null +++ b/release.config.js @@ -0,0 +1,13 @@ +/** + * @type {import('semantic-release').GlobalConfig} + */ +export default { + branches: [ + '+([0-9])?(.{+([0-9]),x}).x', + 'main', + 'next', + 'next-major', + { name: 'beta', prerelease: true }, + { name: 'alpha', prerelease: true }, + ], +} diff --git a/scripts/preview-release b/scripts/preview-release new file mode 100755 index 0000000..eaa8517 --- /dev/null +++ b/scripts/preview-release @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# Preview the next release from a branch +# +# Prerequisites: +# - You must have push access to repository at the `origin` URL +# - The branch you are on must exist on `origin` + +set -euxo pipefail + +branch="$(git rev-parse --abbrev-ref HEAD)" +repository_url="$(git remote get-url origin)" + +semantic-release \ + --plugins="@semantic-release/commit-analyzer,@semantic-release/release-notes-generator" \ + --dry-run \ + --branches="$branch" \ + --repository-url="$repository_url"