-
Notifications
You must be signed in to change notification settings - Fork 1
138 lines (119 loc) · 3.49 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
# 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@v3
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Fetch deps
run: yarn
- name: Build target
run: yarn build
- name: Save artifact
uses: actions/upload-artifact@v3
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:
- name: Checkout
uses: actions/checkout@v3
- name: Restore artifact
uses: actions/download-artifact@v3
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Yarn install
run: |
sudo apt-get install -y moreutils
yarn
- name: Unit tests
run: yarn test
- name: Update coverage
if: github.ref == 'refs/heads/master'
uses: actions/upload-artifact@v3
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: [ 16, 18, 20 ]
name: Test (Node v${{ matrix.node-version }}, OS ${{ matrix.os }})
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Restore artifact
uses: actions/download-artifact@v3
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 != '18' || matrix.os != 'ubuntu-22.04'
run: yarn test
- name: Test & push coverage
if: matrix.node-version == '18' && matrix.os == 'ubuntu-22.04'
run: yarn test
release:
name: Release
# https://github.community/t/trigger-job-on-tag-push-only/18076
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
needs: test_push
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
persist-credentials: false
- name: Restore artifact
uses: actions/download-artifact@v3
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v4
with:
node-version: 18
- 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