-
-
Notifications
You must be signed in to change notification settings - Fork 2
131 lines (123 loc) · 3.39 KB
/
ci.yml
File metadata and controls
131 lines (123 loc) · 3.39 KB
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
name: CI
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
lint:
permissions:
contents: read
uses: NicTool/.github/.github/workflows/lint.yml@main
coverage:
permissions:
contents: read
runs-on: ubuntu-latest
steps:
- name: Start MySQL
run: sudo /etc/init.d/mysql start
- uses: actions/setup-node@v4
- uses: actions/checkout@v6
- run: npm install
- name: Initialize MySQL
run: sh sql/init-mysql.sh
- name: run coverage
run: npx -y c8 --reporter=lcov npm test
env:
NODE_ENV: cov
- name: codecov
uses: codecov/codecov-action@v2
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
get-lts:
permissions:
contents: read
runs-on: ubuntu-latest
steps:
- id: get
uses: msimerson/node-lts-versions@v1
outputs:
active: ${{ steps.get.outputs.active }}
maintenance: ${{ steps.get.outputs.maintenance }}
lts: ${{ steps.get.outputs.lts }}
current: ${{ steps.get.outputs.current }}
min: ${{ steps.get.outputs.min }}
test:
permissions:
contents: read
needs: [ get-lts ]
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
node-version: ${{ fromJson(needs.get-lts.outputs.lts) }}
fail-fast: false
steps:
- run: sudo /etc/init.d/mysql start
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- run: sh sql/init-mysql.sh
- run: npm install
- run: npm test
test-mac:
permissions:
contents: read
needs: [ get-lts ]
runs-on: macos-latest
strategy:
matrix:
node-version: ${{ fromJson(needs.get-lts.outputs.active) }}
fail-fast: false
steps:
- name: Install & Start MySQL
run: |
brew install mysql@8.4
brew services start mysql@8.4
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- run: sh sql/init-mysql.sh
- run: npm install
- run: npm test
test-docker:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v6
- name: Generate .env
run: ./docker/generate-env.sh
- name: Build and start services
run: docker compose -f docker/docker-compose.yml up --build -d --wait
- name: Run tests
run: docker compose -f docker/docker-compose.yml exec api npm test
- name: Logs on failure
if: failure()
run: docker compose -f docker/docker-compose.yml logs
- name: Tear down
if: always()
run: docker compose -f docker/docker-compose.yml down -v
test-win:
permissions:
contents: read
needs: [ get-lts ]
runs-on: windows-latest
strategy:
matrix:
node-version: ${{ fromJson(needs.get-lts.outputs.active) }}
experimental: [true]
fail-fast: false
steps:
- name: Install MySQL
run: |
choco install mysql
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- run: sh sql/init-mysql.sh
- run: npm install
- run: sh test/run.sh