-
Notifications
You must be signed in to change notification settings - Fork 1
131 lines (114 loc) · 3.36 KB
/
ci.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
# This is a Github Workflow that runs tests on any push or pull request.
# If the tests pass and this is a push to the master branch it also runs Semantic Release.
name: CI
on: [push, pull_request]
jobs:
build:
name: build
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Fetch deps
run: yarn
- name: Build target
run: yarn build
- name: Save artifact
uses: actions/upload-artifact@v4
with:
name: artifact-${{ github.run_id }}
retention-days: 1
path: |
docs
target
flow-typed
typings
buildstamp.json
package.json
test_push:
needs: build
if: github.event_name == 'push'
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Restore artifact
uses: actions/download-artifact@v4
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v4
with:
node-version: 22
- run: yarn
- name: Unit test only
run: yarn test
- name: Update coverage
if: github.ref == 'refs/heads/master'
uses: actions/upload-artifact@v4
with:
name: artifact-${{ github.run_id }}
retention-days: 1
path: |
coverage
.nyc_output
test_pr:
if: github.event_name == 'pull_request'
needs: build
strategy:
matrix:
os: [ ubuntu-22.04 ]
node-version: [ 18, 22 ]
name: Test (Node v${{ matrix.node-version }}, OS ${{ matrix.os }})
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Restore artifact
uses: actions/download-artifact@v4
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: yarn
- name: Test only
if: matrix.node-version != '22' || matrix.os != 'ubuntu-22.04'
run: yarn test
- name: Test & push coverage
if: matrix.node-version == '22' && matrix.os == 'ubuntu-22.04'
run: yarn test
release:
name: Release
# https://github.community/t/trigger-job-on-tag-push-only/22076
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
needs: test_push
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
- name: Restore artifact
uses: actions/download-artifact@v4
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Codeclimate
uses: paambaati/[email protected]
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
with:
coverageLocations: |
${{github.workspace}}/coverage/*.lcov:lcov
- name: Release
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
GIT_COMMITTER_EMAIL: '[email protected]'
GIT_COMMITTER_NAME: 'qiwibot'
run: npm_config_yes=true npx zx-semrel