1
+ name : ' release'
2
+
3
+ on :
4
+ workflow_dispatch :
5
+ inputs :
6
+ release_type :
7
+ type : choice
8
+ default : auto
9
+ description : What kind of version upgrade
10
+ options :
11
+ - auto
12
+ - patch
13
+ - minor
14
+ - major
15
+
16
+ jobs :
17
+ release :
18
+ runs-on : ubuntu-latest
19
+ steps :
20
+ - name : Checkout repository
21
+ uses : actions/checkout@v4
22
+ with :
23
+ fetch-depth : " 0"
24
+ submodules : true
25
+
26
+ - name : setup node
27
+ uses : actions/setup-node@v4
28
+ with :
29
+ node-version : lts/*
30
+ registry-url : ' https://registry.npmjs.org'
31
+
32
+
33
+ - uses : oNaiPs/secrets-to-env-action@v1
34
+ with :
35
+ secrets : ${{ toJSON(secrets) }}
36
+
37
+
38
+ - uses : oleksiyrudenko/gha-git-credentials@v2-latest
39
+ with :
40
+ token : ' ${{ secrets.GITHUB_TOKEN }}'
41
+ name : Martin Guillon
42
+
43
+
44
+ - name : install jq
45
+ run : sudo apt install jq
46
+
47
+ - name : Enable CorePack
48
+ run : |
49
+ corepack enable
50
+ yarn config get globalFolder # the yarn command will ensure the correct yarn version is downloaded and installed
51
+
52
+ - name : Get yarn cache directory path
53
+ id : yarn-cache-dir-path
54
+ run : echo "::set-output name=dir::$(yarn config get globalFolder)"
55
+
56
+ - name : Remove package.json resolutions
57
+ run : echo "`jq 'delpaths([["resolutions"]])' package.json`" > package.json
58
+
59
+ - uses : actions/cache@v4
60
+ name : Handle node_modules Cache
61
+ id : yarn-node_modules # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
62
+ with :
63
+ path : node_modules
64
+ key : ${{ runner.os }}-yarn-node_modules-${{ hashFiles('**/yarn.lock') }}
65
+ restore-keys : |
66
+ ${{ runner.os }}-node_modules-
67
+
68
+ - uses : actions/cache@v4
69
+ if : steps.yarn-node_modules.outputs.cache-hit != 'true'
70
+ name : Handle Yarn cache
71
+ id : yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
72
+ with :
73
+ path : ${{ steps.yarn-cache-dir-path.outputs.dir }}
74
+ key : ${{ runner.os }}-yarn-cache-${{ hashFiles('**/yarn.lock') }}
75
+ restore-keys : |
76
+ ${{ runner.os }}-yarn-
77
+
78
+ - name : Install deps
79
+ if : steps.yarn-node_modules.outputs.cache-hit != 'true'
80
+ uses : bahmutov/npm-install@v1
81
+ with :
82
+ install-command : yarn install --silent
83
+ env :
84
+ YARN_ENABLE_IMMUTABLE_INSTALLS : false
85
+
86
+ - name : run setup
87
+ run : |
88
+ npm run setup
89
+
90
+ - name : " NPM Identity"
91
+ env :
92
+ NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
93
+ run : |
94
+ echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc
95
+
96
+ - name : publish auto
97
+ if : github.event.inputs.release_type == 'auto'
98
+ run : |
99
+ npm run publish -- --force-publish --no-verify-access --no-private --no-commit-hooks --yes
100
+ env :
101
+ NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
102
+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
103
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
104
+
105
+ - name : publish
106
+ if : github.event.inputs.release_type != 'auto'
107
+ run : |
108
+ npm run publish -- --force-publish --no-verify-access --no-private --no-commit-hooks --yes --bump ${{ github.event.inputs.release_type }}
109
+ env :
110
+ NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
111
+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
112
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments