-
-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (117 loc) · 3.6 KB
/
ci.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
name: Continuous Integration (CI)
on:
push:
branches:
- main
paths:
- src/**/*.*
jobs:
test:
outputs:
rel: ${{ steps.commit.outputs.rel }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 19.x
always-auth: true
- name: Check commit message
id: commit
run: |
COMMIT_MSG=$(/usr/bin/git log --format=%B -n 1 HEAD)
STRING=$(echo $COMMIT_MSG | (grep -E "infra:|docs:|lint:|code-style:" || echo ''))
if [ -z "$STRING" ]; then
echo "rel=1" >> $GITHUB_OUTPUT
echo "IS_RELEASE_COMMIT=1" >> $GITHUB_ENV
else
echo "This commit will NOT trigger a release."
echo "rel=0" >> $GITHUB_OUTPUT
echo "IS_RELEASE_COMMIT=0" >> $GITHUB_ENV
fi
- name: Install dependencies
run: yarn
- name: Validate Markdown links
run: yarn check-links
- name: Validate package.json
run: yarn validate-package-json
- name: Run ESLint
run: yarn lint
- name: Build source code
run: yarn build
- name: Run test suites
run: yarn test
release:
needs: test
if: needs.test.outputs.rel == 1 || needs.test.outputs.rel == '1'
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Generate tag, release name, and body
run: |
TAG_NAME="v$(jq -r '.version' package.json)"
RELEASE_NAME="Release $TAG_NAME"
BODY=$(sed -n "/## Version $(jq -r '.version' package.json | sed 's/\./\\\./g')/,/##/p" CHANGELOG.md | sed '1d;/^##/d')
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV
echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV
echo "$BODY" >> release.md
- name: Create release
uses: ncipollo/release-action@v1.12.0
with:
allowUpdates: true
tag: ${{ env.TAG_NAME }}
name: ${{ env.RELEASE_NAME }}
token: ${{ secrets.GITHUB_TOKEN }}
bodyFile: release.md
draft: false
prerelease: false
publish-npm:
needs: release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 19.x
always-auth: true
- name: Install dependencies
run: yarn
- name: Build code
run: yarn build
- name: Set authentication token
run: |
npm set //registry.npmjs.org/:_authToken ${{ secrets.NPM_AUTH_TOKEN }}
- name: Publish to NPM
run: yarn publish --access public
publish-gpr:
needs: release
permissions:
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: 19.x
always-auth: true
- name: Install dependencies
run: yarn
- name: Build code
run: yarn build
- name: Set authentication token
run: |
npm set //npm.pkg.github.com/:_authToken ${{ secrets.GPR_AUTH_TOKEN }}
- name: Get ready to publish to GPR
run: |
jq ".name = \"@$REPO\"" package.json > temp.json && mv temp.json package.json
env:
REPO: ${{ github.repository }}
- name: Publish to GPR
run: yarn publish --access public --registry https://npm.pkg.github.com/