Skip to content

Commit 7bc083b

Browse files
author
Khánh Hoàng
committed
chore(build): Implement semantic release automation
Automated semantic release process for better version control. Created new workflows for releasing and publishing, added `@semantic-release/*` plugins in the new `.releaserc.json` file. The package and deno versions are now determined during release, not at development stage.
1 parent 627299b commit 7bc083b

File tree

6 files changed

+72
-20
lines changed

6 files changed

+72
-20
lines changed

.github/workflows/publish.yml

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
name: Publish
2+
23
on:
34
push:
45
branches:
@@ -9,16 +10,40 @@ jobs:
910
name: Test
1011
uses: ./.github/workflows/tests.yml
1112
secrets: inherit
12-
publish:
13-
name: Publish
14-
runs-on: ubuntu-latest
13+
release:
14+
name: Release
1515
needs: test
16+
runs-on: ubuntu-latest
1617
permissions:
17-
contents: read
18+
contents: write
19+
issues: write
20+
pull-requests: write
1821
id-token: write
1922
steps:
2023
- uses: actions/checkout@v4
24+
with:
25+
fetch-depth: 0
2126
- name: Install Deno
2227
uses: denoland/setup-deno@v1
23-
- name: Publish package
28+
- name: Install jq
29+
uses: dcarbone/install-jq-action@v2
30+
- name: Setup pnpm
31+
uses: pnpm/action-setup@v3
32+
with:
33+
version: latest
34+
- name: Setup Node.js
35+
uses: actions/setup-node@v4
36+
with:
37+
node-version: 'lts/*'
38+
cache: 'pnpm'
39+
- name: Release on GitHub
40+
run: pnpm --package conventional-changelog-conventionalcommits --package semantic-release dlx semantic-release
41+
env:
42+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
43+
- name: Update version in deno.json
44+
run: |
45+
VERSION=$(node -p "require('./package.json').version")
46+
jq --arg version "$VERSION" '.version = $version' deno.json > deno.json.tmp
47+
mv deno.json.tmp deno.json
48+
- name: Publish package to JSR
2449
run: deno publish

.github/workflows/tests.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,18 @@ jobs:
1818
version: 8
1919
- uses: actions/setup-node@v4
2020
with:
21+
node-version: 'lts/*'
2122
cache: 'pnpm'
2223
- name: Install dependencies
2324
run: pnpm install
2425
- name: Prettier check
2526
run: pnpm test:prettier
26-
test:
27-
name: Unit tests
27+
- name: Checks for known security issues with the installed packages
28+
run: pnpm audit
29+
- name: Verify the integrity of provenance attestations and registry signatures for installed dependencies
30+
run: pnpm npm audit signatures
31+
node:
32+
name: Node
2833
needs: lints
2934
runs-on: ubuntu-latest
3035
strategy:
@@ -45,3 +50,13 @@ jobs:
4550
run: pnpm install
4651
- name: Run unit tests
4752
run: pnpm test
53+
deno:
54+
name: Deno
55+
needs: lints
56+
runs-on: ubuntu-latest
57+
steps:
58+
- uses: actions/checkout@v4
59+
- name: Install Deno
60+
uses: denoland/setup-deno@v1
61+
- name: Type-check the dependencies
62+
run: deno check src/index.ts

.releaserc.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"branches": ["main"],
3+
"tagFormat": "${version}",
4+
"plugins": [
5+
"@semantic-release/commit-analyzer",
6+
"@semantic-release/release-notes-generator",
7+
"@semantic-release/npm",
8+
"@semantic-release/github"
9+
]
10+
}

deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hckhanh/vn-number",
3-
"version": "1.6.0",
3+
"version": "0.0.0-development",
44
"exports": "./src/index.ts",
55
"exclude": [
66
".github/",

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
{
22
"name": "@hckhanh/vn-number",
3+
"version": "0.0.0-development",
34
"description": "A bunch of utility functions that work with number in Vietnamese language",
45
"type": "module",
6+
"private": true,
57
"sideEffects": false,
68
"scripts": {
79
"test": "vitest related src/**/*.ts",

src/read/NumberReader.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import Numbers from '~/read/Numbers.ts'
2-
import Billion from '~/read/Billion.ts'
3-
import Thousand from '~/read/Thousand.ts'
4-
import Million from '~/read/Million.ts'
5-
import { InvalidNumberTypeError } from '~/read/Utils.ts'
1+
import Numbers from './Numbers.ts'
2+
import Thousand from './Thousand.ts'
3+
import Million from './Million.ts'
4+
import Billion from './Billion.ts'
5+
import { InvalidNumberTypeError } from './Utils.ts'
66

77
enum NumberType {
88
Numbers,
@@ -15,6 +15,13 @@ enum NumberType {
1515
* A number reader in Vietnamese language helper
1616
*/
1717
export default class NumberReader {
18+
private static readonly NumberClasses = {
19+
[NumberType.Numbers]: Numbers,
20+
[NumberType.Thousand]: Thousand,
21+
[NumberType.Million]: Million,
22+
[NumberType.Billion]: Billion
23+
}
24+
1825
/**
1926
* Read a number in Vietnamese language
2027
*
@@ -71,13 +78,6 @@ export default class NumberReader {
7178
return s.match(/.{1,3}(?=(.{3})*$)/g) || []
7279
}
7380

74-
private static readonly NumberClasses = {
75-
[NumberType.Numbers]: Numbers,
76-
[NumberType.Thousand]: Thousand,
77-
[NumberType.Million]: Million,
78-
[NumberType.Billion]: Billion
79-
}
80-
8181
/**
8282
* Map a number in string to a {@link Numbers} object
8383
*

0 commit comments

Comments
 (0)