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