-
Notifications
You must be signed in to change notification settings - Fork 9
/
build_matrix.yml
137 lines (121 loc) · 3.49 KB
/
build_matrix.yml
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
github: # Default `.github/workflows/ci.yml` contents
name: Node.js package CI
"on":
push:
branches:
- main
- develop
pull_request:
types:
- opened
- reopened
- synchronize
schedule:
- cron: 0 0 * * 1-5
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: "${{ !contains(github.ref, 'main')}}"
env:
RUNNING_IN_CI: "true"
NODE_ENV: test
jobs:
validation:
name: Validation
runs-on: ubuntu-latest
steps:
- name: "Checkout project"
uses: actions/checkout@v4
- name: Validate CI setup
run: "rake build_matrix:github:validate"
lint-git:
name: Git linter (Lintje)
needs: validation
runs-on: ubuntu-latest
if: "${{ github.event_name != 'schedule' }}"
steps:
- name: "Checkout project"
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run Git linter
uses: lintje/action@v0.11
lint-ruby:
name: Ruby linter (RuboCop)
needs: validation
runs-on: ubuntu-latest
steps:
- name: "Checkout project"
uses: actions/checkout@v4
- name: "Install Ruby"
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- name: "Run RuboCop"
run: bundle exec rubocop
lint-js:
name: JavaScript linter (Prettier)
needs: validation
runs-on: ubuntu-latest
steps:
- name: "Checkout project"
uses: actions/checkout@v4
- name: "Checkout Mono"
uses: actions/checkout@v4
with:
repository: appsignal/mono
path: "tmp/mono"
- name: "Install Node.js"
uses: actions/setup-node@v4
with:
node-version: 22
cache: "npm"
cache-dependency-path: "package-lock.json"
- name: "Install dependencies"
run: tmp/mono/bin/mono bootstrap
- name: "Node.js Lint (Prettier)"
run: npm run lint
integration-tests:
name: Integration tests (${{matrix.name}})
needs: validation
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: Express + Redis
test-app: express-redis
- name: Express + Knex.js
test-app: express-knex
- name: Koa + MySQL
test-app: koa-mysql
- name: Koa + Mongo
test-app: koa-mongo
- name: Express + Mongoose
test-app: express-mongoose
- name: Express + Postgres
test-app: express-postgres
- name: Express + Apollo
test-app: express-apollo
- name: Express + Yoga
test-app: express-yoga
- name: Express + Prisma + Postgres
test-app: express-prisma-postgres
- name: Express + Prisma + Mongo
test-app: express-prisma-mongo
- name: Next.js
test-app: nextjs
- name: Nest.js
test-app: nestjs
- name: Fastify
test-app: fastify
steps:
- name: "Checkout project"
uses: actions/checkout@v4
- name: "Run integration tests"
run: script/integration_test_app ${{matrix.test-app}}
matrix:
nodejs:
- nodejs: "22"
- nodejs: "20"
- nodejs: "18"