-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (124 loc) · 3.7 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
140
141
142
# 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:
init:
name: init
runs-on: ubuntu-20.04
outputs:
skip: ${{ steps.ci-skip-step.outputs.ci-skip }}
skip-not: ${{ steps.ci-skip-step.outputs.ci-skip-not }}
steps:
- uses: actions/checkout@v3
- id: ci-skip-step
uses: mstachniuk/ci-skip@v1
build:
name: build
needs: init
if: ${{ needs.init.outputs.skip == 'false' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
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
test_push:
needs: build
if: github.event_name == 'push'
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Restore artifact
uses: actions/download-artifact@v3
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v3
with:
node-version: 18
- run: yarn
- name: Unit test only
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-20.04 ]
node-version: [ 16, 18 ]
name: Test (Node v${{ matrix.node-version }}, OS ${{ matrix.os }})
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Restore artifact
uses: actions/download-artifact@v3
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: yarn
- name: Test only
if: matrix.node-version != '18' || matrix.os != 'ubuntu-20.04'
run: yarn test
- name: Test & push coverage
if: matrix.node-version == '18' && matrix.os == 'ubuntu-20.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-20.04
steps:
- uses: actions/checkout@v3
- name: Restore artifact
uses: actions/download-artifact@v3
with:
name: artifact-${{ github.run_id }}
- uses: actions/setup-node@v3
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:lcov
- name: Release
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
GH_USER: 'qiwibot'
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GIT_AUTHOR_EMAIL: '[email protected]'
GIT_COMMITTER_EMAIL: '[email protected]'
GIT_AUTHOR_NAME: '@qiwibot'
GIT_COMMITTER_NAME: '@qiwibot'
run: npx -p @qiwi/semrel-toolkit semrel