You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/workflows/README.md
+46-5Lines changed: 46 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,49 @@ possible. For jobs that use docker, or auxiliary jobs (e.g. uploading artifacts
8
8
to google cloud), use ubuntu-latest to avoid changing the version on GitHub
9
9
actions updates. On macOS and Windows, using Ubuntu reduces CI cost.
10
10
11
+
## CI test layout
12
+
13
+
Open3D splits **C++** and **Python** testing so each configuration is exercised
14
+
once, without re-running the full suite in every wheel matrix cell. Docker-based
15
+
workflows use `docker/docker_test.sh`; see `docker/docker_test.sh` usage for tag
16
+
names.
17
+
18
+
### `docker_test.sh` phases
19
+
20
+
Optional second argument (default `all`):
21
+
22
+
| Phase | Runs |
23
+
|-------|------|
24
+
|`cpp`| C++ gtest only (`./bin/tests --gtest_shuffle`) |
25
+
|`lib`|`cpp` + command-line tools + C++ linking example + `make uninstall`|
26
+
|`python`|`pytest python/test` inside the CI image |
27
+
|`all`|`lib` + `python` (full suite) |
28
+
29
+
SYCL, CPU (`cpu-static`, `cpu-shared-ml`, …), and OpenBLAS docker tags support
30
+
all phases. CUDA ML configs on GCE (`ubuntu-cuda.yml`) call `docker_test.sh`
31
+
with one argument only → **`all`** on a GPU VM.
32
+
33
+
### Where tests run
34
+
35
+
| Area | C++ / integration | Python | Notes |
36
+
|------|-------------------|--------|--------|
37
+
|**ubuntu.yml**|`lib` per matrix leg |`python` in same image | All in Docker |
38
+
|**ubuntu-sycl.yml**|`cpp` in **build-lib** (ON/OFF) |`python` in **build-wheel** after `docker_build.sh sycl-shared py*`| No duplicate bare `docker run` gtest |
39
+
|**ubuntu-openblas.yml**|`lib` once on **build-lib-arm64** (reference image); amd64 `lib` in single job |`python` once per Python version in wheel job (`"${DOCKER_TAG}"`) | Wheel matrix does not re-run C++ |
40
+
|**ubuntu-cuda.yml**|**`all`** on GCE per `CI_CONFIG`| same step | Only workflow with CUDA GPUs in tests |
41
+
|**ubuntu-wheel.yml**|**Once** in **test-cpp** (gtest bundle from **build-lib**) |**test-wheel-cpu**: host `test_wheel` + `run_python_tests` per Python (CUDA + CPU wheel smoke); wheels built in Docker, tests on `ubuntu-22.04` runner | No GPU on GitHub |
42
+
|**windows.yml** / **macos.yml**| gtest in **build-lib**|**test-wheel** on runner | Native builds, not docker |
43
+
44
+
GitHub-hosted runners have **no CUDA GPU**. SYCL jobs rely on SYCL-CPU / skips;
45
+
Windows **test-wheel** skips pytest on the `cuda` device matrix leg.
46
+
47
+
### Downstream jobs when build-lib fails
48
+
49
+
**build-wheel** (and related jobs such as **test-wheel**, **test-cpp** on
50
+
ubuntu-wheel) use `if: ${{ always() && !cancelled() }}` with `needs: build-lib`
51
+
so wheel builds and tests still run when a lib job failed (e.g. flaky gtest).
52
+
Steps may fail if required artifacts were never uploaded.
53
+
11
54
## Documentation deployment
12
55
13
56
### Directory structure
@@ -83,7 +126,7 @@ Now `~/open3d-ci-sa-key.json` should have been created.
83
126
84
127
### CI Procedure
85
128
86
-
The GCE CI workflow `.github/workflows/gce-ubuntu-docker.yml` performs these steps:
129
+
The GCE CI workflow `.github/workflows/ubuntu-cuda.yml` performs these steps:
87
130
88
131
- Clone the repository
89
132
- Build docker image, starting with a an NVIDIA base devel image with CUDA and
@@ -92,10 +135,8 @@ The GCE CI workflow `.github/workflows/gce-ubuntu-docker.yml` performs these ste
92
135
- On Google Compute Engine (GCE), in parallel (up to GPU quota limit - currently
93
136
4):
94
137
- Create a new VM instance with a custom OS image
95
-
- Run docker image on GCE (Google Compute Engine) with environment variables
96
-
setfor specific build config.
97
-
- The docker image entrypoint is the `run-ci.sh` script: build, install, run
98
-
tests and uninstall.
138
+
- Build the docker image on the VM, then run `docker/docker_test.sh`for the
139
+
config (full `all` phase: C++ gtest, Python pytest, linking, uninstall).
99
140
- Delete the VM instance.
100
141
101
142
A separate VM instance is created for each commit and build option. The VM
0 commit comments