Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a728872
Build shared libraries by default, single pybind module, simpler devi…
ssheorey Jul 6, 2026
447c814
Fix CI regressions from ss/dll port (PR #7516)
ssheorey Jul 7, 2026
b4ec5d8
Always install gcc to find gfortran
ssheorey Jul 7, 2026
0e1b879
Fix CI: make wheel-build cmake/pyenv steps robust to reused build-lib…
ssheorey Jul 7, 2026
0312775
Fix CI: use cmake --fresh to avoid stale cache when reusing build-lib…
ssheorey Jul 7, 2026
3809d1b
Fix CI: grant id-token/attestations permission to ARM64 wheel job
ssheorey Jul 7, 2026
0af221e
Fix CI: disable Jupyter extension for Windows wheel (needs BUILD_WEBR…
ssheorey Jul 8, 2026
53c6e56
Fix CI: skip Open3D-ML clone in Dockerfiles if already present
ssheorey Jul 8, 2026
797f1d1
Fix CI: make nodesource gpg keyring import non-interactive
ssheorey Jul 8, 2026
85dc521
Fix CI: explicit vkmemalloc dep + avoid disk-heavy cmake --fresh
ssheorey Jul 8, 2026
ed216f8
Fix CUDA leaking into open3d-cpu wheel; fix dead SYCL python-version …
ssheorey Jul 8, 2026
a83da13
Fix CI: correct Dockerfile.wheel cleanup quotes and remove build_cuda
ssheorey Jul 9, 2026
cc0b939
Merge branch 'main' of github.com:isl-org/Open3D into ss/dll
ssheorey Jul 9, 2026
a655679
Fix CMake warnings caused by LINK_GROUP RESCAN on INTERFACE targets
ssheorey Jul 9, 2026
7940e10
linker fix for curl, opensll, MKL.
ssheorey Jul 9, 2026
23e023f
Review. Switch back to single build dir for cuda and cpu. Simplify co…
ssheorey Jul 9, 2026
f200b44
Build CUDA wheels from open3d-devel packages instead of a fat lib image.
ssheorey Jul 10, 2026
99270c5
Fix wheel artifact staging and pin OpenBLAS to static libs.
ssheorey Jul 10, 2026
3dcb270
Fix Windows wheel reuse missing VMA headers from 3rdparty_downloads.
ssheorey Jul 10, 2026
91dc09d
Build wheel torch ops against CPU torch for CI test compatibility.
ssheorey Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ either due to lack of resources or GPU quota exhaustion.

The custom VM image has NVIDIA drivers, `nvidia-container-toolkit` and `docker`
installed. It contains today's date in the name and the image family is set to
`ubuntu-os-docker-gpu-2004-lts`. The latest image from this family is
`ubuntu-os-docker-gpu-2204-lts`. The latest image from this family is
used for running CI.
#### Step 3: GitHub
Expand Down
39 changes: 27 additions & 12 deletions .github/workflows/macos.yml
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ env:
BUILD_CUDA_MODULE: OFF

jobs:
MacOS:
build-lib:
permissions:
contents: write # upload
id-token: write
Expand Down Expand Up @@ -66,19 +66,29 @@ jobs:

- name: Install dependencies
run: |
brew install ccache glslang spirv-cross
# Fix gfortran not found issue.
brew install gcc
brew install ccache glslang spirv-cross gcc
ln -s $(brew --prefix gcc)/bin/gfortran-* /usr/local/bin/gfortran

ccache -M 2G # See .github/workflows/readme.md for ccache strategy.
- name: Config and build
run: |
PATH=/usr/local/var/homebrew/linked/ccache/libexec:$PATH
ccache -s
export BUILD_PYTHON_MODULE=OFF
./util/run_ci.sh
DEVEL_PKG_NAME="$(basename build/package/open3d-devel-*.tar.xz)"
echo "DEVEL_PKG_NAME=$DEVEL_PKG_NAME" >> $GITHUB_ENV

# Compress build directory for reuse (exclude some large potentially unnecessary files if needed)
# We need 'build' directory.
tar -caf build.tar.xz build

- name: Upload build artifact
if: ${{ matrix.CONFIG == 'OFF' }}
uses: actions/upload-artifact@v4
with:
name: open3d-build-${{ matrix.os }}
path: build.tar.xz
- name: Build Open3D viewer app
if: ${{ env.BUILD_SHARED_LIBS == 'OFF' }}
run: |
Expand Down Expand Up @@ -130,6 +140,7 @@ jobs:
fi

build-wheel:
needs: build-lib
name: Build wheel
permissions:
contents: write # upload
Expand Down Expand Up @@ -172,6 +183,14 @@ jobs:
ref: main
path: ${{ env.OPEN3D_ML_ROOT }}

- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: open3d-build-${{ matrix.os }}

- name: Unpack build artifact
run: tar -xf build.tar.xz

- name: Setup cache
uses: actions/cache@v4
with:
Expand All @@ -183,8 +202,7 @@ jobs:
# Restore any ccache cache entry, if none for
# ${{ runner.os }}-${{ runner.arch }}-ccache-${{ github.sha }} exists.
# Common prefix will be used so that ccache can be used across commits.
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-ccache
restore-keys: ${{ runner.os }}-${{ runner.arch }}-ccache

- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -202,13 +220,10 @@ jobs:
source util/ci_utils.sh
install_python_dependencies

# Fix macos-14 arm64 runner image issues, see comments in MacOS job.
# brew install gcc is required so that `brew --prefix gcc` resolves;
brew install gcc
ln -s $(brew --prefix gcc)/bin/gfortran-* /usr/local/bin/gfortran

brew install ccache glslang spirv-cross
brew install ccache glslang spirv-cross gcc
ccache -M 2G # See .github/workflows/readme.md for ccache strategy.
# Fix gfortran not found issue
ln -s $(brew --prefix gcc)/bin/gfortran-* /usr/local/bin/gfortran

- name: Config and build wheel
run: |
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/ubuntu-cuda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,13 @@ jobs:
fail-fast: false
matrix:
include:
- CI_CONFIG: 2-jammy
- CI_CONFIG: 3-ml-shared-jammy
- CI_CONFIG: 5-ml-noble
- CI_CONFIG: 2-noble
- CI_CONFIG: 3-ml-shared-noble
env:
# Export everything from matrix to be easily used.
# Docker tag and ccache names must be consistent with docker_build.sh
CI_CONFIG : ${{ matrix.CI_CONFIG }}
BUILD_PACKAGE : ${{ contains(fromJson('["3-ml-shared-jammy"]'), matrix.CI_CONFIG) }}
BUILD_PACKAGE : ${{ contains(fromJson('["3-ml-shared-noble"]'), matrix.CI_CONFIG) }}
GCE_INSTANCE_PREFIX: open3d-ci-${{ matrix.CI_CONFIG }}
DOCKER_TAG : open3d-ci:${{ matrix.CI_CONFIG }}
CCACHE_TAR_NAME : open3d-ci-${{ matrix.CI_CONFIG }}
Expand Down
46 changes: 45 additions & 1 deletion .github/workflows/ubuntu-openblas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,47 @@ jobs:
- name: Docker test
run: docker/docker_test.sh openblas-amd64-py312-dev

openblas-arm64:
build-lib-arm64:
name: Build Lib ARM64
permissions:
contents: write # Release upload
id-token: write
attestations: write
artifact-metadata: write
runs-on: ubuntu-24.04-arm # latest
env:
DEVELOPER_BUILD: 'ON'
OPEN3D_CPU_RENDERING: true
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Maximize build space
run: |
source util/ci_utils.sh
maximize_ubuntu_github_actions_build_space

- name: Docker build lib
run: |
# Use py310 as dummy
docker/docker_build.sh openblas-arm64-py310-dev build-lib
# Image name open3d-ci:openblas-arm64-py310-dev (check valid tag in script)
docker tag open3d-ci:openblas-arm64-py310-dev open3d-lib-arm64:latest
docker save open3d-lib-arm64:latest | gzip > open3d-lib-arm64.tar.gz

- name: Upload Lib Image
uses: actions/upload-artifact@v4
with:
name: open3d-lib-arm64
path: open3d-lib-arm64.tar.gz

build-wheel-arm64:
name: Build Wheel ARM64
permissions:
contents: write # Release upload
id-token: write
attestations: write
runs-on: ubuntu-24.04-arm
needs: build-lib-arm64
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -68,6 +102,15 @@ jobs:
source util/ci_utils.sh
maximize_ubuntu_github_actions_build_space

- name: Download Lib Image
uses: actions/download-artifact@v4
with:
name: open3d-lib-arm64
path: .

- name: Load Lib Image
run: docker load -i open3d-lib-arm64.tar.gz # Restore open3d-lib-arm64:latest

- name: Compute Docker tag for this matrix entry
run: |
# Strip the dot: 3.12 ➜ 312, 3.14 ➜ 314 …
Expand All @@ -78,6 +121,7 @@ jobs:

- name: Docker build
run: |
export BASE_IMAGE=open3d-lib-arm64:latest
docker/docker_build.sh "${DOCKER_TAG}"
shopt -s failglob
PIP_PKG_NAME="$(basename ${GITHUB_WORKSPACE}/open3d-[0-9]*.whl)"
Expand Down
112 changes: 90 additions & 22 deletions .github/workflows/ubuntu-sycl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ env:
DEVELOPER_BUILD: ${{ github.event.inputs.developer_build || 'ON' }}

jobs:
ubuntu-sycl:
build-lib:
name: Build Lib
permissions:
contents: write # Release upload
id-token: write
Expand All @@ -41,39 +42,36 @@ jobs:
run: |
source util/ci_utils.sh
maximize_ubuntu_github_actions_build_space
- name: Docker build
- name: Docker build lib
run: |
# Use py310 as dummy
if [ "${{ matrix.BUILD_SHARED_LIBS }}" = "ON" ]; then
docker/docker_build.sh sycl-shared
docker/docker_build.sh sycl-shared build-lib
docker tag open3d-ci:sycl-shared open3d-lib-sycl-shared:latest
docker save open3d-lib-sycl-shared:latest -o open3d-lib-sycl-shared.tar
xz open3d-lib-sycl-shared.tar
ls -lhs open3d-lib-sycl-shared.tar.xz
else
docker/docker_build.sh sycl-static
fi
- name: Docker test
run: |
du -hs $PWD
if [ "${{ matrix.BUILD_SHARED_LIBS }}" = "ON" ]; then
docker/docker_test.sh sycl-shared
else
docker/docker_test.sh sycl-static
docker/docker_build.sh sycl-static build-lib
# Static build usually doesn't produce wheels or shared libs for python
# But we might need artifacts. For now keep simple.
fi

- name: Generate artifact attestation
- name: Upload Lib Image
if: ${{ matrix.BUILD_SHARED_LIBS == 'ON' }}
uses: actions/attest@v4
uses: actions/upload-artifact@v4
with:
subject-path: |
${{ github.workspace }}/open3d*.whl
${{ github.workspace }}/open3d-devel-*.tar.xz
name: open3d-lib-sycl-shared
path: open3d-lib-sycl-shared.tar.xz

- name: Upload Python wheel and C++ binary package to GitHub artifacts
- name: Upload C++ binary package to GitHub artifacts
if: ${{ matrix.BUILD_SHARED_LIBS == 'ON' }}
uses: actions/upload-artifact@v4
with:
name: open3d-sycl-linux-wheel-and-binary
path: |
open3d*.whl
open3d-devel-*.tar.xz
name: open3d-devel-sycl
path: open3d-devel-*.tar.xz
if-no-files-found: error

- name: Update devel release
if: ${{ github.ref == 'refs/heads/main' && matrix.BUILD_SHARED_LIBS == 'ON' }}
env:
Expand All @@ -97,3 +95,73 @@ jobs:
if: ${{ github.ref == 'refs/heads/main' }}
run: |
gsutil cp ${GITHUB_WORKSPACE}/open3d-ci-sycl.tar.gz gs://open3d-ci-cache/ || true

build-wheel:
name: Build Wheel
permissions:
contents: write # Release upload
id-token: write
attestations: write
artifact-metadata: write
runs-on: ubuntu-latest
needs: build-lib
strategy:
fail-fast: false
matrix:
python_version: ['3.10', '3.11', '3.12', '3.13']
is_main:
- ${{ github.ref == 'refs/heads/main' }}
exclude:
- is_main: false
python_version: '3.10'
- is_main: false
python_version: '3.11'
- is_main: false
python_version: '3.12'
env:
PYTHON_VERSION: ${{ matrix.python_version }}
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Maximize build space
run: |
source util/ci_utils.sh
maximize_ubuntu_github_actions_build_space

- name: Download Lib Image
uses: actions/download-artifact@v4
with:
name: open3d-lib-sycl-shared
path: .

- name: Load Lib Image
run: docker load -i open3d-lib-sycl-shared.tar.xz

- name: Docker build
run: |
export BASE_IMAGE=open3d-lib-sycl-shared:latest

# We execute docker buildscript with python version argument.
docker/docker_build.sh sycl-shared py${{ matrix.python_version }}

- name: Generate artifact attestation
uses: actions/attest@v4
with:
subject-path: |
${{ github.workspace }}/open3d*.whl

- name: Upload wheel to GitHub artifacts
uses: actions/upload-artifact@v4
with:
name: open3d-sycl-wheel-py${{ matrix.python_version }}
path: open3d*.whl
if-no-files-found: error

- name: Update devel release
if: ${{ github.ref == 'refs/heads/main' }}
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release upload main-devel open3d-*.whl --clobber
gh release view main-devel

Loading