Skip to content

Commit 1230359

Browse files
authored
update runner to use database versions and CI comparable to v7 (#261)
1 parent a8ce25f commit 1230359

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+5145
-277
lines changed

.github/workflows/ci.yml

Lines changed: 40 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,124 +1,73 @@
11
name: CI
2-
on: [pull_request]
2+
on:
3+
pull_request:
34

4-
env:
5-
SEQ_DB: sequelize_test
6-
SEQ_USER: sequelize_test
7-
SEQ_PW: sequelize_test
5+
# This configuration cancels previous runs if a new run is started on the same PR. Only one run at a time per PR.
6+
# from https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-a-fallback-value
7+
concurrency:
8+
group: ${{ github.head_ref || github.run_id }}
9+
cancel-in-progress: true
810

911
jobs:
1012
test-sqlite:
1113
strategy:
1214
fail-fast: false
1315
matrix:
14-
# node 10 is the minimum supported version for Sequelize 6
15-
# node 14 is the minimum supported version for Sequelize 7
16-
# node 16 is latest LTS (to keep updated)
17-
node: [10, 14, 16]
18-
name: SQLite (sequelize 6 & 7, node ${{ matrix.node }})
16+
node-version: [10, 18, 20]
17+
name: sqlite (Node ${{ matrix.node-version }})
1918
runs-on: ubuntu-latest
2019
env:
2120
DIALECT: sqlite
2221
steps:
23-
- uses: actions/checkout@v2
24-
- uses: actions/setup-node@v1
22+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
23+
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
2524
with:
26-
node-version: 14.x
27-
- run: /bin/bash ./setup/prepare-ci.sh
25+
node-version: ${{ matrix.node-version }}
26+
cache: yarn
27+
- run: /bin/bash ./dev/prepare-ci.sh
2828
- name: Execute SSCCE
29-
run: npm run _test
29+
run: yarn run _test
3030
test-postgres:
3131
strategy:
3232
fail-fast: false
3333
matrix:
34-
postgres-version: [9.5, 10] # Does not work with 12
34+
node-version: [10, 18, 20]
35+
postgres-version: [oldest, latest]
36+
minify-aliases: [true, false]
3537
native: [true, false]
36-
node: [10, 14, 16]
37-
name: Postgres ${{ matrix.postgres-version }}${{ matrix.native && ' (native)' || '' }} (sequelize 6 & 7, node ${{ matrix.node }})
38+
name: postgres ${{ matrix.postgres-version }}${{ matrix.native && ' (native)' || '' }} (Node ${{ matrix.node-version }})${{ matrix.minify-aliases && ' (minified aliases)' || '' }}
3839
runs-on: ubuntu-latest
39-
services:
40-
postgres:
41-
image: sushantdhiman/postgres:${{ matrix.postgres-version }}
42-
env:
43-
POSTGRES_USER: sequelize_test
44-
POSTGRES_DB: sequelize_test
45-
POSTGRES_PASSWORD: sequelize_test
46-
ports:
47-
- 5432:5432
48-
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
4940
env:
5041
DIALECT: ${{ matrix.native && 'postgres-native' || 'postgres' }}
42+
SEQ_PG_MINIFY_ALIASES: ${{ matrix.minify-aliases && '1' || '' }}
5143
steps:
52-
- run: PGPASSWORD=sequelize_test psql -h localhost -p 5432 -U sequelize_test sequelize_test -c '\l'
53-
- uses: actions/checkout@v2
54-
- uses: actions/setup-node@v3
44+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
45+
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
5546
with:
56-
node-version: ${{ matrix.node }}
57-
- run: /bin/bash ./setup/prepare-ci.sh
47+
node-version: ${{ matrix.node-version }}
48+
cache: yarn
49+
- run: /bin/bash ./dev/prepare-ci.sh
50+
- run: yarn start-postgres-${{ matrix.postgres-version }}
5851
- name: Execute SSCCE
59-
run: npm run _test
60-
test-mysql-mariadb:
52+
run: yarn run _test
53+
test-oldest-latest:
6154
strategy:
6255
fail-fast: false
6356
matrix:
64-
node: [10, 14, 16]
65-
db:
66-
- '{ name: "MySQL 5.7", image: "mysql:5.7", dialect: "mysql" }'
67-
- '{ name: "MariaDB 10.3", image: "mariadb:10.3", dialect: "mariadb" }'
68-
name: ${{ fromJson(matrix.db).name }} (node ${{ matrix.node }})
57+
node-version: [10, 18, 20]
58+
database-version: [oldest, latest]
59+
dialect: [mysql, mariadb, mssql]
60+
name: ${{ matrix.dialect }} ${{ matrix.database-version }} (Node ${{ matrix.node-version }})
6961
runs-on: ubuntu-latest
70-
services:
71-
mysql:
72-
image: ${{ fromJson(matrix.db).image }}
73-
env:
74-
MYSQL_DATABASE: sequelize_test
75-
MYSQL_USER: sequelize_test
76-
MYSQL_PASSWORD: sequelize_test
77-
MYSQL_ROOT_PASSWORD: sequelize_test
78-
ports:
79-
- 3306:3306
80-
options: --health-cmd="mysqladmin -usequelize_test -psequelize_test status" --health-interval 10s --health-timeout 5s --health-retries 5 --tmpfs /var/lib/mysql:rw
8162
env:
82-
DIALECT: ${{ fromJson(matrix.db).dialect }}
63+
DIALECT: ${{ matrix.dialect }}
8364
steps:
84-
- run: mysql --host 127.0.0.1 --port 3306 -uroot -psequelize_test -e "GRANT ALL ON *.* TO 'sequelize_test'@'%' with grant option; FLUSH PRIVILEGES;"
85-
- uses: actions/checkout@v2
86-
- uses: actions/setup-node@v3
65+
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
66+
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
8767
with:
88-
node-version: ${{ matrix.node }}
89-
- run: /bin/bash ./setup/prepare-ci.sh
68+
node-version: ${{ matrix.node-version }}
69+
cache: yarn
70+
- run: /bin/bash ./dev/prepare-ci.sh
71+
- run: yarn start-${{ matrix.dialect }}-${{ matrix.database-version }}
9072
- name: Execute SSCCE
91-
run: npm run _test
92-
test-mssql:
93-
strategy:
94-
fail-fast: false
95-
matrix:
96-
node: [10, 14, 16]
97-
mssql-version: [2017, 2019]
98-
name: MSSQL ${{ matrix.mssql-version }} (sequelize 6 & 7, node ${{ matrix.node }})
99-
runs-on: ubuntu-latest
100-
services:
101-
mssql:
102-
image: mcr.microsoft.com/mssql/server:${{ matrix.mssql-version }}-latest
103-
env:
104-
ACCEPT_EULA: Y
105-
SA_PASSWORD: Password12!
106-
ports:
107-
- 1433:1433
108-
options: >-
109-
--health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Password12!" -l 30 -Q \"SELECT 1\" || exit 1"
110-
--health-start-period 10s
111-
--health-interval 10s
112-
--health-timeout 5s
113-
--health-retries 10
114-
env:
115-
DIALECT: mssql
116-
steps:
117-
- run: /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Password12!" -Q "CREATE DATABASE sequelize_test; ALTER DATABASE sequelize_test SET READ_COMMITTED_SNAPSHOT ON;"
118-
- uses: actions/checkout@v2
119-
- uses: actions/setup-node@v3
120-
with:
121-
node-version: ${{ matrix.node }}
122-
- run: /bin/bash ./setup/prepare-ci.sh
123-
- name: Execute SSCCE
124-
run: npm run _test
73+
run: yarn run _test

.gitignore

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
1-
node_modules
2-
npm-debug.log
3-
yarn.lock
1+
*.swp
42
.idea
3+
.DS_STORE
4+
npm-debug.log*
5+
*~
6+
test.sqlite
7+
test.sqlite2
8+
*.sublime*
9+
package-lock.json
10+
pnpm-lock.yaml
11+
12+
.nyc_output
13+
coverage-*
14+
coverage
15+
tmp
16+
.vscode/
17+
.typedoc-build
18+
node_modules
19+
*.log
20+
/.nx
21+
22+
.pnp.*
23+
.yarn/*
24+
!.yarn/patches
25+
!.yarn/plugins
26+
!.yarn/releases
27+
!.yarn/sdks
28+
!.yarn/versions

.vscode/launch.json

Lines changed: 0 additions & 21 deletions
This file was deleted.
File renamed without changes.

dev/ci-db-configs.ts

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
const { env } = process;
2+
3+
export const CiDbConfigs = {
4+
mssql: {
5+
host: env.SEQ_MSSQL_HOST || env.SEQ_HOST || 'localhost',
6+
username: env.SEQ_MSSQL_USER || env.SEQ_USER || 'SA',
7+
password: env.SEQ_MSSQL_PW || env.SEQ_PW || 'Password12!',
8+
port: env.SEQ_MSSQL_PORT || env.SEQ_PORT || 22_019,
9+
database: env.SEQ_MSSQL_DB || env.SEQ_DB || 'sequelize_test',
10+
dialectOptions: {
11+
options: {
12+
encrypt: false,
13+
requestTimeout: 25_000,
14+
},
15+
},
16+
pool: {
17+
max: Number(env.SEQ_MSSQL_POOL_MAX || env.SEQ_POOL_MAX || 5),
18+
idle: Number(env.SEQ_MSSQL_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
19+
},
20+
},
21+
22+
mysql: {
23+
database: env.SEQ_MYSQL_DB || env.SEQ_DB || 'sequelize_test',
24+
username: env.SEQ_MYSQL_USER || env.SEQ_USER || 'sequelize_test',
25+
password: env.SEQ_MYSQL_PW || env.SEQ_PW || 'sequelize_test',
26+
host: env.MYSQL_PORT_3306_TCP_ADDR || env.SEQ_MYSQL_HOST || env.SEQ_HOST || '127.0.0.1',
27+
port: env.MYSQL_PORT_3306_TCP_PORT || env.SEQ_MYSQL_PORT || env.SEQ_PORT || 20_057,
28+
pool: {
29+
max: Number(env.SEQ_MYSQL_POOL_MAX || env.SEQ_POOL_MAX || 5),
30+
idle: Number(env.SEQ_MYSQL_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
31+
},
32+
},
33+
34+
snowflake: {
35+
username: env.SEQ_SNOWFLAKE_USER || env.SEQ_USER || 'root',
36+
password: env.SEQ_SNOWFLAKE_PW || env.SEQ_PW || '',
37+
database: env.SEQ_SNOWFLAKE_DB || env.SEQ_DB || 'sequelize_test',
38+
dialectOptions: {
39+
account: env.SEQ_SNOWFLAKE_ACCOUNT || env.SEQ_ACCOUNT || 'sequelize_test',
40+
role: env.SEQ_SNOWFLAKE_ROLE || env.SEQ_ROLE || 'role',
41+
warehouse: env.SEQ_SNOWFLAKE_WH || env.SEQ_WH || 'warehouse',
42+
schema: env.SEQ_SNOWFLAKE_SCHEMA || env.SEQ_SCHEMA || '',
43+
},
44+
},
45+
46+
mariadb: {
47+
database: env.SEQ_MARIADB_DB || env.SEQ_DB || 'sequelize_test',
48+
username: env.SEQ_MARIADB_USER || env.SEQ_USER || 'sequelize_test',
49+
password: env.SEQ_MARIADB_PW || env.SEQ_PW || 'sequelize_test',
50+
host: env.MARIADB_PORT_3306_TCP_ADDR || env.SEQ_MARIADB_HOST || env.SEQ_HOST || '127.0.0.1',
51+
port: env.MARIADB_PORT_3306_TCP_PORT || env.SEQ_MARIADB_PORT || env.SEQ_PORT || 21_103,
52+
pool: {
53+
max: Number(env.SEQ_MARIADB_POOL_MAX || env.SEQ_POOL_MAX || 5),
54+
idle: Number(env.SEQ_MARIADB_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
55+
},
56+
},
57+
58+
sqlite: {},
59+
60+
postgres: {
61+
database: env.SEQ_PG_DB || env.SEQ_DB || 'sequelize_test',
62+
username: env.SEQ_PG_USER || env.SEQ_USER || 'sequelize_test',
63+
password: env.SEQ_PG_PW || env.SEQ_PW || 'sequelize_test',
64+
host: env.POSTGRES_PORT_5432_TCP_ADDR || env.SEQ_PG_HOST || env.SEQ_HOST || '127.0.0.1',
65+
port: env.POSTGRES_PORT_5432_TCP_PORT || env.SEQ_PG_PORT || env.SEQ_PORT || 23_010,
66+
pool: {
67+
max: Number(env.SEQ_PG_POOL_MAX || env.SEQ_POOL_MAX || 5),
68+
idle: Number(env.SEQ_PG_POOL_IDLE || env.SEQ_POOL_IDLE || 3000),
69+
},
70+
minifyAliases: Boolean(env.SEQ_PG_MINIFY_ALIASES),
71+
},
72+
};
File renamed without changes.
File renamed without changes.

setup/lib-replacements.ts renamed to dev/lib-replacements.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ async function run() {
6060
} else if (process.argv[2] === '--undo') {
6161
await undoReplacements();
6262
} else {
63-
throw new Error('Invalid call to setup/lib-replacements.js');
63+
throw new Error('Invalid call to dev/lib-replacements.js');
6464
}
6565
}
6666

File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
services:
2+
mariadb-latest:
3+
container_name: sequelize-mariadb-latest
4+
image: mariadb:11.2.2
5+
environment:
6+
MYSQL_DATABASE: sequelize_test
7+
MYSQL_USER: sequelize_test
8+
MYSQL_PASSWORD: sequelize_test
9+
MYSQL_ROOT_PASSWORD: sequelize_test
10+
ports:
11+
- 21103:3306
12+
volumes:
13+
- mariadb-latest:/var/lib/mysql
14+
healthcheck:
15+
test: ["CMD", "mariadb-admin", "-usequelize_test", "-psequelize_test", "status"]
16+
interval: 3s
17+
timeout: 1s
18+
retries: 10
19+
20+
networks:
21+
default:
22+
name: sequelize-mariadb-latest-network
23+
24+
volumes:
25+
mariadb-latest:
26+
name: sequelize-mariadb-latest-volume

0 commit comments

Comments
 (0)