diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml new file mode 100644 index 000000000..419f01112 --- /dev/null +++ b/.github/workflows/build-and-test.yml @@ -0,0 +1,212 @@ +# 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: Build and Test Warp + +on: + workflow_call: + workflow_dispatch: + +env: + PYTHON_VERSION: 3.11 + +jobs: + build-warp-windows: + runs-on: windows-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 --upgrade numpy + tools/packman/packman install -l _build/target-deps/cuda cuda 11.8.0_522.06-abe3d9d7-windows-x86_64 + tools/packman/packman install -l _build/host-deps/msvc msvc 2019-16.11.24 + tools/packman/packman install -l _build/host-deps/winsdk winsdk 10.17763 + - name: Build + run: | + python build_lib.py --cuda_path=_build/target-deps/cuda --msvc_path=_build/host-deps/msvc/VC/Tools/MSVC/14.29.30133 --sdk_path=_build/host-deps/winsdk + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: build-artifact-windows + path: ./warp/bin/ + + build-warp-ubuntu: + runs-on: 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: Install dependencies + run: | + python -m pip install --upgrade pip + pip install --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/ + + 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 --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-windows: + runs-on: windows-latest + needs: build-warp-windows + env: + OS: windows-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-windows + path: ./warp/bin/ + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install --upgrade numpy coverage[toml] usd-core + pip install . + - 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/action@v2.3 + with: + paths: "rspec.xml" + show: "fail" + if: always() + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.4.0 + with: + env_vars: OS,PYTHON_VERSION + files: ./coverage.xml + flags: unittests + token: ${{ secrets.CODECOV_TOKEN }} + + 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 install --upgrade pip + pip install --upgrade numpy coverage[toml] usd-core + pip install . + - 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/action@v2.3 + with: + paths: "rspec.xml" + show: "fail" + if: always() + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.4.0 + with: + env_vars: OS,PYTHON_VERSION + files: ./coverage.xml + flags: unittests + token: ${{ secrets.CODECOV_TOKEN }} + + test-warp-macos: + runs-on: macos-latest + needs: build-warp-macos + env: + OS: 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: Download Warp build artifact + uses: actions/download-artifact@v4 + with: + name: build-artifact-macos + path: ./warp/bin/ + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install --upgrade numpy coverage[toml] usd-core + pip install . + - 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/action@v2.3 + with: + paths: "rspec.xml" + show: "fail" + if: always() + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.4.0 + with: + env_vars: OS,PYTHON_VERSION + files: ./coverage.xml + flags: unittests + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 000000000..b033bb5bb --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,18 @@ +# 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. + +# Nightly workflow only runs on the default branch +name: Nightlies + +on: + schedule: + - cron: "45 9 * * *" # 7AM UTC, 12AM PST, 3AM EST + +jobs: + build-and-test: + uses: ./.github/workflows/build-and-test.yml + secrets: inherit diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 000000000..37ec6de68 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,23 @@ +# 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: Pull Request + +on: + push: + branches: + - "pull-request/[0-9]+" + pull_request: # Remove when using nv-gha-runners + +concurrency: + group: ${{ github.workflow }}-on-${{ github.event_name }}-from-${{ github.ref_name }} + cancel-in-progress: true + +jobs: + build-and-test: + uses: ./.github/workflows/build-and-test.yml + secrets: inherit diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 77cf94c18..a13400ccb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,13 @@ +ci: + autofix_commit_msg: | + [pre-commit.ci] auto code formatting + autofix_prs: false + autoupdate_branch: "" + autoupdate_commit_msg: "[pre-commit.ci] pre-commit autoupdate" + autoupdate_schedule: quarterly + skip: [] + submodules: false + # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 000000000..09b10d377 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +coverage: + status: + project: # More options at https://docs.codecov.com/docs/commit-status + default: + target: auto #default + threshold: "5" + base: auto + +comment: + behavior: default + require_changes: false # if true: only post the comment if coverage changes + hide_project_coverage: false # [true :: only show coverage on the git diff aka patch coverage]] + require_base: false # [true :: must have a base report to post] + require_head: true # [true :: must have a head report to post]