Skip to content

Commit 8cfad14

Browse files
docs: add CI documentation
Signed-off-by: Nathan Weinberg <[email protected]>
1 parent f48c6a1 commit 8cfad14

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

.markdownlint-cli2.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ config:
77
code-block-style: false
88
no-duplicate-header: false
99
single-trailing-newline: false
10+
descriptive-link-text: false
1011
globs:
1112
- "**/*.md"
1213
ignores:

docs/ci.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# CI for InstructLab Eval
2+
3+
Before running any testing locally, ensure you have run `pip install -r requirements-dev.txt` in your environment.
4+
5+
## Unit tests
6+
7+
Unit tests are designed to test specific Eval components or features in isolation. Generally, new code should be adding or modifying unit tests.
8+
9+
All unit tests currently live in the `tests/` directory and are run with [pytest](https://docs.pytest.org/) via [tox](https://tox.wiki/).
10+
11+
To run the unit tests, you can run `tox -e unit` or `tox -e unitcov` if you want to generate coverage metrics as well.
12+
13+
In CI, the tests are run with Python 3.10 - 3.11 on Ubuntu and MacOS runners - you can see the details [here](https://github.com/instructlab/eval/blob/main/.github/workflows/test.yml)
14+
15+
## Functional tests
16+
17+
Functional tests are designed to test Eval components or features in tandem, but not necessarily as part of a complex workflow. New code may or may not need a functional test but should strive to implement one if possible.
18+
19+
The functional test script is Shell-based and can be found at `scripts/functional-tests.sh`.
20+
21+
To run the functional tests, you can run `tox -e functional`.
22+
23+
In CI, the tests are run with Python 3.10 - 3.11 on Ubuntu and MacOS runners - you can see the details [here](https://github.com/instructlab/eval/blob/main/.github/workflows/test.yml)
24+
25+
## End-to-end (E2E) tests
26+
27+
InstructLab Eval has several end-to-end jobs that run to ensure compatibility with the [InstructLab Core](https://github.com/instructlab/instructlab) project.
28+
You can see details about the types of jobs being run in the matrix below.
29+
30+
For more details about the E2E scripts themselves, see [the InstructLab Core documentation](https://github.com/instructlab/instructlab/blob/main/docs/maintainers/ci.md#end-to-end-e2e-tests).
31+
32+
### Current E2E Jobs
33+
34+
| Name | T-Shirt Size | Runner Host | Instance Type | OS | GPU Type | Script | Flags | Runs when? | Slack/Discord reporting? |
35+
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
36+
| [`e2e-nvidia-l4-x1.yml`](https://github.com/instructlab/sdg/blob/main/.github/workflows/e2e-nvidia-l4-x1.yml) | Medium | AWS |[`g6.8xlarge`](https://aws.amazon.com/ec2/instance-types/g5/) | CentOS Stream 9 | 1 x NVIDIA L4 w/ 24 GB VRAM | `e2e-ci.sh` | `m` | Pull Requests, Push to `main` or `release-*` branch | No |
37+
| [`e2e-nvidia-l40s-x4.yml`](https://github.com/instructlab/sdg/blob/main/.github/workflows/e2e-nvidia-l40s-x4.yml) | Large | AWS |[`g6e.12xlarge`](https://aws.amazon.com/ec2/instance-types/g6e/) | CentOS Stream 9 | 4 x NVIDIA L40S w/ 48 GB VRAM (192 GB) | `e2e-ci.sh` | `l` | Manually by Maintainers, Automatically against `main` branch at 4PM UTC | Yes |
38+
39+
### Discord/Slack reporting
40+
41+
Some E2E jobs send their results to the channel `#e2e-ci-results` via the `Son of Jeeves` bot in both Discord and Slack. You can see which jobs currently have reporting via the "Current E2E Jobs" table above.
42+
43+
In Slack, this has been implemented via [the official Slack GitHub Action](https://github.com/slackapi/slack-github-action?tab=readme-ov-file#technique-2-slack-app).
44+
In Discord, we use [actions/actions-status-discord](https://github.com/sarisia/actions-status-discord) and the built-in channel webhooks feature.
45+
46+
### Triggering an E2E job via GitHub Web UI
47+
48+
For the E2E jobs that can be launched manually, they take an input field that
49+
specifies the PR number or git branch to run them against. If you run them
50+
against a PR, they will automatically post a comment to the PR when the tests
51+
begin and end so it's easier for those involved in the PR to follow the results.
52+
53+
1. Visit the [Actions tab](https://github.com/instructlab/eval/actions).
54+
2. Click on one of the E2E workflows on the left side of the page.
55+
3. Click on the `Run workflow` button on the right side of the page.
56+
4. Enter a branch name or a PR number in the input field.
57+
5. Click the green `Run workflow` button.
58+
59+
> [!NOTE]
60+
> Only users with "Write" permissions to the repo can run CI jobs manually

0 commit comments

Comments
 (0)