|
| 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