-
Notifications
You must be signed in to change notification settings - Fork 1
138 lines (122 loc) · 4.87 KB
/
release_package.yml
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
name: Release package
on:
workflow_dispatch:
inputs:
release-type:
description: 'Release type (one of): patch, minor, major, prepatch, preminor, premajor, prerelease'
required: true
jobs:
release:
runs-on: ubuntu-latest
steps:
# Checkout project repository
- name: Checkout
uses: actions/[email protected]
- name: Import GPG key
id: import-gpg
uses: crazy-max/ghaction-import-gpg@v4
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true
# Setup Node.js environment
- name: Setup Node.js
uses: actions/setup-node@v2
with:
registry-url: https://registry.npmjs.org/
node-version: '21'
# Install dependencies (required by Run tests step)
#- name: Install dependencies
# run: yarn install
# Tests
#- name: Run tests
# run: yarn test
# Configure Git
- name: Git configuration
run: |
git config --global user.email "${{ steps.import-gpg.outputs.email }}"
git config --global user.name "${{ steps.import-gpg.outputs.name }}"
# Bump package version
# Use tag latest
- name: Bump release version
if: startsWith(github.event.inputs.release-type, 'pre') != true
run: |
echo "NEW_VERSION=$(npm --no-git-tag-version version $RELEASE_TYPE)" >> $GITHUB_ENV
echo "RELEASE_TAG=latest" >> $GITHUB_ENV
env:
RELEASE_TYPE: ${{ github.event.inputs.release-type }}
# Bump package pre-release version
# Use tag beta for pre-release versions
- name: Bump pre-release version
if: startsWith(github.event.inputs.release-type, 'pre')
run: |
echo "NEW_VERSION=$(npm --no-git-tag-version --preid=beta version $RELEASE_TYPE
echo "RELEASE_TAG=beta" >> $GITHUB_ENV
env:
RELEASE_TYPE: ${{ github.event.inputs.release-type }}
# Update changelog unreleased section with new version
- name: Update changelog
uses: superfaceai/release-changelog-action@v1
with:
path-to-changelog: CHANGELOG.md
version: ${{ env.NEW_VERSION }}
operation: release
# Read version changelog
- id: get-changelog
name: Get version changelog
uses: superfaceai/release-changelog-action@v1
with:
path-to-changelog: CHANGELOG.md
version: ${{ env.NEW_VERSION }}
operation: read
# Update GitHub release with changelog
- name: Update GitHub release documentation
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.NEW_VERSION }}
body: ${{ steps.get-changelog.outputs.changelog }}
prerelease: ${{ startsWith(github.event.inputs.release-type, 'pre') }}
token: ${{ secrets.PUSH_TO_PROTECTED_BRANCH }}
# Commit changes
- name: Commit CHANGELOG.md and package.json changes and create tag
run: |
git add "package.json"
git add "CHANGELOG.md"
git commit -m "release ${{ env.NEW_VERSION }}"
- name: Install dependencies
run: npm install
- name: Push to protected branch
uses: CasperWA/push-protected@v2
with:
token: ${{ secrets.PUSH_TO_PROTECTED_BRANCH }}
branch: main
unprotect_reviews: true
tags: true
# Publish version to public repository
- name: Publish
run: npm publish --access public --tag ${{ env.RELEASE_TAG }} --verbose
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
- name: Purge cache
uses: gacts/purge-jsdelivr-cache@v1
with:
url: |
https://cdn.jsdelivr.net/npm/@maveio/components/+esm
https://cdn.jsdelivr.net/npm/@maveio/components/dist/react.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/index.global.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/react.global.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/themes/default.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/themes/dolphin.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/themes/synthwave.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/generated/locales/en.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/generated/locales/nl.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/generated/locales/de.js
https://cdn.jsdelivr.net/npm/@maveio/components/dist/generated/locales/fr.js
- name: 'Purge cache mave.io cdn'
uses: indiesdev/[email protected]
id: mave-cdn
with:
url: https://cdn.purge.mave.io/mirror
method: 'GET'
timeout: 10000