-
-
Notifications
You must be signed in to change notification settings - Fork 730
141 lines (129 loc) · 4.4 KB
/
publish-new-version.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
name: Run npm version and push tags
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
id-token: write
on:
workflow_dispatch:
inputs:
version:
description: What version number would you like to use? The version number should be **without** a leading `v`, e.g. `5.7.1` or `6.2.4`.
bump-main:
description: Should we bump the package.json main version?
required: true
type: boolean
default: true
update-version-function:
description: Should we update the version function to use this version?
required: true
type: boolean
default: true
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GH_PUSH_TOKEN }}
- name: Set up git-cliff
uses: kenji-miyake/setup-git-cliff@v2
- name: setup git config
run: |
git config user.name "Github Actions Bot"
git config user.email "<>"
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
- if: ${{ endsWith(github.event.inputs.version, '0') }}
run: |
PREV_COMMIT=$(git rev-list --tags --max-count=1)
echo PREV=$(git describe --tags ${PREV_COMMIT}) >> $GITHUB_ENV
- if: ${{ !endsWith(github.event.inputs.version, '0') }}
run: echo PREV=$(git describe --abbrev=0) >> $GITHUB_ENV
- name: Generate changelog from ${{ env.PREV }}
continue-on-error: true
if: ${{ !contains(github.event.inputs.version, '-') }}
env:
PREV: ${{ env.PREV }}
run: |
git-cliff ${{ env.PREV }}..HEAD --tag v${{ github.event.inputs.version }} --prepend CHANGELOG.md
if [ -n "$(git status --porcelain)" ]; then
git commit -am "docs: Update CHANGELOG.md"
else
echo "No changes to CHANGELOG.md"
fi
- run: yarn install --frozen-lockfile --ignore-scripts
- name: npm version
run: |
npm version ${{ github.event.inputs.version }} --ignore-scripts
git push origin ${{ github.ref_name }}
git push --tags
env:
CI: true
update-main-version:
needs: build
if: ${{ github.event.inputs.bump-main == 'true' }}
runs-on: ubuntu-latest
steps:
- name: checkout main branch
uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0
token: ${{ secrets.GH_PUSH_TOKEN }}
- name: setup git config
run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
- name: Use Node js 18
uses: actions/setup-node@v4
with:
node-version: '18.x'
cache: 'yarn'
- name: upgrade package version
run: |
jq --arg version "${{ github.event.inputs.version }}+main" '.version=$version' package.json > package.json.tmp
mv package.json.tmp package.json
- name: checkout changelog from ${{ github.ref_name }}
run: git checkout origin/${{ github.ref_name }} -- CHANGELOG.md
- name: lint
run: |
yarn install --frozen-lockfile --ignore-scripts
yarn lint:fix
- name: push changes
run: |
git add package.json CHANGELOG.md
git commit -m "chore: bump version to ${{ github.event.inputs.version }}+main"
git push origin main
publish-docker:
needs: build
uses: ./.github/workflows/docker_publish.yaml
secrets: inherit
with:
version: ${{ github.event.inputs.version }}
publish-npm:
needs: build
uses: ./.github/workflows/release.yaml
secrets: inherit
with:
version: ${{ github.event.inputs.version }}
release-changelog: # TODO this changelog is different than the git-cliff one above
needs: build
uses: ./.github/workflows/release_changelog.yml
with:
version: ${{ github.event.inputs.version }}
update-version-checker:
needs: publish-docker
if: ${{ github.event.inputs.update-version-function == 'true' }}
uses: ./.github/workflows/update_version_for_version_checker.yml
secrets: inherit
with:
version: ${{ github.event.inputs.version }}