Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
26 changes: 23 additions & 3 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 @@ -75,9 +75,21 @@ jobs:
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 @@ -129,6 +141,7 @@ jobs:
fi

build-wheel:
needs: build-lib
name: Build wheel
permissions:
contents: write # upload
Expand Down Expand Up @@ -171,6 +184,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 @@ -182,8 +203,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 Down
9 changes: 4 additions & 5 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 Expand Up @@ -119,7 +118,7 @@ jobs:
--machine-type=n1-standard-8 \
--boot-disk-size="128GB" \
--boot-disk-type="pd-ssd" \
--image-family="ubuntu-os-docker-gpu-2004-lts" \
--image-family="ubuntu-os-docker-gpu-2204-lts" \
--metadata-from-file=startup-script=./util/gcloud_auto_clean.sh \
--scopes="storage-full,compute-rw" \
--service-account="$GCE_GPU_CI_SA"; do
Expand Down
44 changes: 43 additions & 1 deletion .github/workflows/ubuntu-openblas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,45 @@ 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: read
runs-on: ubuntu-24.04-arm
needs: build-lib-arm64
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -68,6 +100,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 +119,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
43 changes: 43 additions & 0 deletions .github/workflows/ubuntu-wheel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,38 @@ env:
BUILD_CUDA_MODULE: 'ON'

jobs:
build-lib:
name: Build Lib
runs-on: ubuntu-latest
env:
DEVELOPER_BUILD: 'ON'
CCACHE_TAR_NAME: open3d-ubuntu-2204-cuda-ci-ccache
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 cuda_wheel_py310_dev build-lib
# The image is tagged open3d-ci:wheel by default in docker_build.sh (cuda_wheel_build)
docker tag open3d-ci:wheel open3d-lib:latest
docker save open3d-lib:latest -o open3d-lib.tar
gzip open3d-lib.tar
ls -lhs open3d-lib.tar.gz

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

build-wheel:
needs: build-lib
permissions:
contents: write # Release upload
id-token: write
Expand Down Expand Up @@ -61,10 +92,22 @@ jobs:
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-image
path: .

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

# Be verbose and explicit here such that a developer can directly copy the
# `docker/docker_build.sh xxx` command to execute locally.
- name: Docker build
run: |
export BASE_IMAGE=open3d-lib:latest

if [ "${{ env.PYTHON_VERSION }}" = "3.10" ] && [ "${{ env.DEVELOPER_BUILD }}" = "ON" ]; then
docker/docker_build.sh cuda_wheel_py310_dev
elif [ "${{ env.PYTHON_VERSION }}" = "3.11" ] && [ "${{ env.DEVELOPER_BUILD }}" = "ON" ]; then
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/vtk_packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
permissions:
contents: write
# TODO: Convert to docker
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checkout source code
uses: actions/checkout@v4
Expand Down
Loading
Loading