Skip to content

CI

CI #458

Workflow file for this run

# Copyright (c) 2024 NVIDIA CORPORATION. All rights reserved.
# NVIDIA CORPORATION and its licensors retain all intellectual property
# and proprietary rights in and to this software, related documentation
# and any modifications thereto. Any use, reproduction, disclosure or
# distribution of this software and related documentation without an express
# license agreement from NVIDIA CORPORATION is strictly prohibited.
name: CI
on:
workflow_call:
workflow_dispatch:
push:
tags:
- v*
branches:
- main
- release-*
schedule: # Schedule workflow only runs on the default branch
- cron: "45 9 * * *"
env:
PYTHON_VERSION: 3.11
jobs:
build-warp-ubuntu:
runs-on: ubuntu-latest
outputs:
artifact-url: ${{ steps.exports-header.outputs.artifact-url }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --no-cache-dir --upgrade numpy
- name: Build Warp
run: |
tools/packman/packman install -l _build/target-deps/cuda cuda 11.8.0_520.61-d8963068-linux-x86_64
python build_lib.py --cuda_path=_build/target-deps/cuda
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-artifact-ubuntu
path: warp/bin/
- name: Upload exports.h
uses: actions/upload-artifact@v4
id: exports-header
with:
name: exports-header
path: warp/native/exports.h
build-warp-macos:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --no-cache-dir --upgrade numpy
- name: Build
run: |
python build_lib.py
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-artifact-macos
path: ./warp/bin/
test-warp-ubuntu:
runs-on: ubuntu-latest
needs: build-warp-ubuntu
env:
OS: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Download Warp build artifact
uses: actions/download-artifact@v4
with:
name: build-artifact-ubuntu
path: ./warp/bin/
- name: Install Dependencies
run: |
python -m pip cache purge
python -m pip install --upgrade pip
pip install --no-cache-dir --upgrade numpy coverage[toml] usd-core
pip install --no-cache-dir .
- name: Run Tests
run: python -m warp.tests --junit-report-xml rspec.xml --coverage --coverage-xml coverage.xml -s autodetect
- name: Test Summary
uses: test-summary/[email protected]
with:
paths: "rspec.xml"
show: "fail"
if: always()
- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
with:
env_vars: OS,PYTHON_VERSION
files: ./coverage.xml
flags: unittests
token: ${{ secrets.CODECOV_TOKEN }}
test-warp-macos:
runs-on: macos-13
needs: build-warp-macos
env:
OS: macos-13
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Download Warp build artifact
uses: actions/download-artifact@v4
with:
name: build-artifact-macos
path: ./warp/bin/
- name: Install Dependencies
run: |
python -m pip cache purge
python -m pip install --upgrade pip
pip install --no-cache-dir --upgrade numpy coverage[toml] usd-core
pip install --no-cache-dir .
- name: Run Tests
run: python -m warp.tests --junit-report-xml rspec.xml --coverage --coverage-xml coverage.xml -s autodetect
- name: Test Summary
uses: test-summary/[email protected]
with:
paths: "rspec.xml"
show: "fail"
if: always()
- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
with:
env_vars: OS,PYTHON_VERSION
files: ./coverage.xml
flags: unittests
token: ${{ secrets.CODECOV_TOKEN }}
pull-request-docs:
runs-on: ubuntu-latest
needs: build-warp-ubuntu
if: ${{ github.event_name == 'pull_request' }}
outputs:
artifact-url: ${{ steps.build-docs-output.outputs.artifact-url }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Download Warp binaries
uses: actions/download-artifact@v4
with:
name: build-artifact-ubuntu
path: warp/bin/
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --no-cache-dir -r docs/requirements.txt
- name: Build Sphinx documentation
run: python build_docs.py
- name: Upload artifacts
uses: actions/upload-artifact@v4
id: build-docs-output
with:
name: build-docs-output
path: |
warp/stubs.py
docs/modules/functions.rst
check-build-docs-output:
runs-on: ubuntu-latest
needs: pull-request-docs
if: ${{ github.event_name == 'pull_request' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download build_docs.py output
uses: actions/download-artifact@v4
with:
name: build-docs-output
- name: Check functions.rst
env:
ARTIFACT_URL: ${{ needs.pull-request-docs.outputs.artifact-url }}
run: >
git diff --exit-code docs/modules/functions.rst ||
(echo "Please run build_docs.py (or download from $ARTIFACT_URL) and add docs/modules/functions.rst to your pull request." && false)
- name: Check stubs.py
env:
ARTIFACT_URL: ${{ needs.pull-request-docs.outputs.artifact-url }}
run: >
git diff --exit-code warp/stubs.py ||
(echo "Please run build_docs.py (or download from $ARTIFACT_URL) and add warp/stubs.py to your pull request." && false)
check-exports-header:
runs-on: ubuntu-latest
needs: build-warp-ubuntu
if: ${{ github.event_name == 'pull_request' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download exports.h
uses: actions/download-artifact@v4
with:
name: exports-header
path: warp/native/
- name: Check exports.h
env:
ARTIFACT_URL: ${{ needs.build-warp-ubuntu.outputs.artifact-url }}
run: >
git diff --exit-code warp/native/exports.h ||
(echo "Please run build_lib.py (or download from $ARTIFACT_URL) and add warp/native/exports.h to your pull request." && false)