Skip to content

Commit 7d97bb0

Browse files
committed
Add documentation about CI
This adds documentation about the existing CI workflows and the split between regular and extended CI. It also update the release instruction, to add the reminder about extended CI.
1 parent 1d920bf commit 7d97bb0

File tree

1 file changed

+69
-4
lines changed

1 file changed

+69
-4
lines changed

MAINTENANCE.md

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,81 @@ file to `.npmignore`. All files listed there will **NOT** be added to the npm pa
1818
When you remove a top level file or directory, remember to check (and remove if present)
1919
if the deleted file / directory was present in `.npmignore` file.
2020

21+
## CI
22+
23+
We split the CI into two parts:
24+
25+
- regular CI, that we run on each PR
26+
- extended CI, that we run on each release
27+
28+
We also have additional CI, that can be run occasionally:
29+
30+
- benchmarks (can be triggered manually)
31+
- documentation release (triggered on pushes to main)
32+
33+
### Regular CI
34+
35+
The regular CI consists of the following workflows:
36+
37+
- Checking code quality (linters for JS and Rust)
38+
- Typescript tests
39+
- Unit tests
40+
- JS Dock linter
41+
- Partial examples (see below)
42+
- Partial integration tests
43+
44+
### Extended CI
45+
46+
The extended CI consists of the following workflow:
47+
48+
- Full examples (see bellow)
49+
- Full integration tests
50+
51+
### Matrix
52+
53+
We run examples on multiple node versions and architectures.
54+
55+
- ✅ - means we run it both on regular and extended CI
56+
- 🟠 - mean we run it on extended CI only
57+
- ❌ - means we do not run this configuration
58+
59+
The motivation for such split is to reduce the execution time for CI that is run on each commit / PR,
60+
while also ensuring the driver works correctly in most common configurations, when creating a new release.
61+
62+
#### Examples
63+
64+
| | Linux x64 | Linux arm | MacOS Intel* | MacOS Arm* |
65+
|-------------- |----------- |----------- |------------- |----------- |
66+
| Node 20 || 🟠 |||
67+
| Node 22 | 🟠 | 🟠 |||
68+
| Node 24 | 🟠 | 🟠 |||
69+
| Node current |||||
70+
71+
*) Disabled due to problems with docker
72+
73+
#### Integration tests
74+
75+
| | Linux x64 | Linux arm**| MacOS Intel | MacOS Arm |
76+
|-------------- |----------- |----------- |------------- |----------- |
77+
| Node 20 ||| ❌ (planned) ||
78+
| Node 22 | 🟠 || ❌ (planned) ||
79+
| Node 24 | 🟠 || ❌ (planned) ||
80+
| Node current | 🟠 || ❌ (planned) ||
81+
82+
**) Disabled due to problems with ccm
83+
2184
## Releasing process
2285

2386
1. Bump the package version. Remember to update the version in `package-lock.json` in
2487
main directory, examples and benchmarks
2588
(see [example commit](https://github.com/scylladb/nodejs-rs-driver/pull/363/changes/41250609737052975129c7514439869324478008) on how to do that).
26-
2. Create a release notes on GitHub. The version tag must match version from `package.json` with `v` prefix (for example: `v0.2.0`).
89+
2. Create a new tag
90+
3. Ensure the extended CI passes.
91+
4. Create a release notes on GitHub. The version tag must match version from `package.json` with `v` prefix (for example: `v0.2.0`).
2792
Once you publish release notes, CI action will trigger automatically. This action will build and publish the npm package.
28-
3. Once the CI action finishes, check if it succeeded. If it failed, you will have to fix the underlying issue, and re-run the CI action.
29-
4. Verify that the new release is visible at [npmjs site](https://www.npmjs.com/package/scylladb-driver-alpha).
30-
5. Test the package, by installing it directly from npm. Go to `examples` directory, in `package.json` update the line:
93+
5. Once the CI action finishes, check if it succeeded. If it failed, you will have to fix the underlying issue, and re-run the CI action.
94+
6. Verify that the new release is visible at [npmjs site](https://www.npmjs.com/package/scylladb-driver-alpha).
95+
7. Test the package, by installing it directly from npm. Go to `examples` directory, in `package.json` update the line:
3196
`"scylladb-driver-alpha": "file:./../"`
3297
to:
3398
`"scylladb-driver-alpha": "<just-released-version>"`,

0 commit comments

Comments
 (0)