-
Notifications
You must be signed in to change notification settings - Fork 1
139 lines (121 loc) · 3.57 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
132
133
134
135
136
137
138
139
# 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-24.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: build-${{ github.sha }}
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-24.04
steps:
- uses: actions/checkout@v4
- name: Restore artifact
uses: actions/download-artifact@v4
with:
name: build-${{ github.sha }}
- uses: actions/setup-node@v4
with:
node-version: 22
- run: yarn
- name: Unit test only
run: yarn test
- name: Upload coverage
if: github.ref == 'refs/heads/master'
uses: actions/upload-artifact@v4
with:
name: coverage-${{ github.sha }}
path: |
coverage
.nyc_output
- name: Merge artifacts
if: github.ref == 'refs/heads/master'
uses: actions/upload-artifact/merge@v4
with:
name: all-${{ github.sha }}
patterns: |
build-${{ github.sha }}
coverage-${{ github.sha }}
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: build-${{ github.sha }}
- 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-24.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: all-${{ github.sha }}
- 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.info: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