Fix rocky linux clang #466
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI on Linux | |
| on: | |
| # Trigger builds on pull requests | |
| pull_request: | |
| paths-ignore: | |
| - "**.md" | |
| # Trigger builds AND tests on push to main | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - "**.md" | |
| # Add manual trigger via Actions UI for running BOTH build and test | |
| workflow_dispatch: | |
| env: | |
| RUST_LOG: info | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| build: | |
| name: Build / ${{ matrix.variance.name }} | |
| runs-on: ${{ matrix.variance.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| variance: | |
| - name: Ubuntu-22.04 / CUDA-12.8.1 / x86_64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu22-cuda12:latest" | |
| runner: ubuntu-latest | |
| - name: Ubuntu-22.04 / CUDA-12.8.1 / ARM64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu22-cuda12:latest" | |
| runner: ubuntu-22.04-arm | |
| - name: Ubuntu-24.04 / CUDA-12.8.1 / x86_64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu24-cuda12:latest" | |
| runner: ubuntu-latest | |
| - name: Ubuntu-24.04 / CUDA-12.8.1 / ARM64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu24-cuda12:latest" | |
| runner: ubuntu-24.04-arm | |
| - name: RockyLinux-9 / CUDA-12.8.1 / x86_64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-rockylinux9-cuda12:latest" | |
| runner: ubuntu-latest | |
| outputs: | |
| # Output the result of the permission check | |
| actor_has_write_permission: ${{ steps.check_access.outputs.require-result }} | |
| # Output the build artifact details so the test job can use them | |
| artifact_name: ${{ steps.artifact_details.outputs.name }} | |
| artifact_path: ${{ steps.artifact_details.outputs.path }} | |
| steps: | |
| - name: Free up space | |
| # Without this the job will likely run out of disk space. | |
| run: | | |
| df -h | |
| # Remove Java | |
| sudo rm -rf /usr/lib/jvm | |
| # Remove .NET | |
| sudo rm -rf /usr/share/dotnet | |
| # Remove Swift | |
| sudo rm -rf /usr/share/swift | |
| # Remove Haskell | |
| sudo rm -rf /usr/local/.ghcup | |
| # Remove Julia | |
| sudo rm -rf /usr/local/julia* | |
| # Remove Android SDKs | |
| sudo rm -rf /usr/local/lib/android | |
| # Remove Chromium | |
| sudo rm -rf /usr/local/share/chromium | |
| # Remove Microsoft/Edge and Google Chrome builds | |
| sudo rm -rf /opt/microsoft /opt/google | |
| # Remove Azure CLI | |
| sudo rm -rf /opt/az | |
| # Remove PowerShell | |
| sudo rm -rf /usr/local/share/powershell | |
| # Remove CodeQL and other toolcaches | |
| sudo rm -rf /opt/hostedtoolcache | |
| docker system prune -af || true | |
| docker builder prune -af || true | |
| df -h | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Check access permissions | |
| id: check_access | |
| uses: actions-cool/check-user-permission@v2 | |
| with: | |
| require: write | |
| username: ${{ github.triggering_actor }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Pull build image | |
| run: docker pull ${{ matrix.variance.image }} | |
| - name: Record host UID/GID | |
| run: | | |
| echo "HOST_UID=$(id -u)" >> $GITHUB_ENV | |
| echo "HOST_GID=$(id -g)" >> $GITHUB_ENV | |
| - name: Set container name | |
| run: echo "CONTAINER_NAME=ci-build-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.variance.runner }}" >> $GITHUB_ENV | |
| - name: Start build container | |
| run: | | |
| docker create --name "$CONTAINER_NAME" \ | |
| -v "$PWD":/workspace \ | |
| -w /workspace \ | |
| -e RUST_LOG \ | |
| -e RUST_BACKTRACE \ | |
| ${{ matrix.variance.image }} \ | |
| sleep infinity | |
| docker start "$CONTAINER_NAME" | |
| - name: Verify CUDA, Rust installation | |
| run: | | |
| docker exec "$CONTAINER_NAME" bash -lc 'set -euo pipefail | |
| nvcc --version | |
| rustup show | |
| ' | |
| - name: Rustfmt | |
| run: | | |
| docker exec "$CONTAINER_NAME" bash -lc 'set -euo pipefail | |
| cargo fmt --all -- --check | |
| ' | |
| - name: Build all bindings | |
| run: | | |
| docker exec "$CONTAINER_NAME" bash -lc 'set -euo pipefail | |
| cargo build --all-features -p cust_raw | |
| ' | |
| - name: Build workspace | |
| run: | | |
| docker exec "$CONTAINER_NAME" bash -lc 'set -euo pipefail | |
| cargo build --workspace \ | |
| --exclude "optix*" \ | |
| --exclude "path-tracer" \ | |
| --exclude "denoiser" \ | |
| --exclude "ex0*" \ | |
| --exclude "cudnn*" | |
| ' | |
| - name: Clippy | |
| run: | | |
| docker exec "$CONTAINER_NAME" bash -lc 'set -euo pipefail | |
| export RUSTFLAGS=-Dwarnings | |
| cargo clippy --workspace \ | |
| --exclude "optix*" \ | |
| --exclude "path-tracer" \ | |
| --exclude "denoiser" \ | |
| --exclude "ex0*" \ | |
| --exclude "cudnn*" | |
| ' | |
| - name: Check documentation | |
| run: | | |
| docker exec "$CONTAINER_NAME" bash -lc 'set -euo pipefail | |
| export RUSTDOCFLAGS=-Dwarnings | |
| cargo doc --workspace --all-features --document-private-items --no-deps \ | |
| --exclude "optix*" \ | |
| --exclude "path-tracer" \ | |
| --exclude "denoiser" \ | |
| --exclude "ex0*" \ | |
| --exclude "cudnn*" \ | |
| --exclude "cust_raw" | |
| ' | |
| - name: Normalize build artifacts ownership | |
| run: | | |
| docker exec "$CONTAINER_NAME" bash -lc "rm -rf /workspace/target/debug/incremental || true" | |
| docker exec "$CONTAINER_NAME" bash -lc "chown -R ${HOST_UID}:${HOST_GID} /workspace/target || true" | |
| - name: Stop build container | |
| run: | | |
| docker rm -f "$CONTAINER_NAME" || true | |
| - name: Prepare artifact details | |
| id: artifact_details | |
| run: | | |
| SANITIZED_NAME=$(echo '${{ matrix.variance.name }}' | sed 's/[^a-zA-Z0-9.-]/-/g') | |
| ARTIFACT_NAME="target_debug-${SANITIZED_NAME}-${{ github.run_id }}" | |
| ARTIFACT_PATH="target/debug" | |
| echo "name=${ARTIFACT_NAME}" >> $GITHUB_OUTPUT | |
| echo "path=${ARTIFACT_PATH}" >> $GITHUB_OUTPUT | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ steps.artifact_details.outputs.name }} | |
| path: ${{ steps.artifact_details.outputs.path }} | |
| retention-days: 1 | |
| test: | |
| name: Test / ${{ matrix.variance.name }} | |
| # Depends on the build job | |
| needs: build | |
| # Run ONLY IF: | |
| # - The corresponding 'build' job succeeded AND | |
| # - EITHER: | |
| # - Event is 'push' to 'main' | |
| # - OR Event is 'workflow_dispatch' | |
| # - OR Event is 'pull_request' AND the 'actor_has_write_permission' output from build is 'true' | |
| if: > | |
| needs.build.result == 'success' && | |
| ( | |
| (github.event_name == 'push' && github.ref == 'refs/heads/main') || | |
| github.event_name == 'workflow_dispatch' || | |
| (github.event_name == 'pull_request' && needs.build.outputs.actor_has_write_permission == 'true') | |
| ) | |
| runs-on: ${{ matrix.variance.runner }} | |
| # Use the exact same container image as the build job | |
| container: | |
| image: ${{ matrix.variance.image }} | |
| strategy: | |
| # Save some credits | |
| fail-fast: true | |
| matrix: | |
| variance: | |
| # Must match the build job's matrix definition | |
| - name: Ubuntu-22.04 / CUDA-12.8.1 / x86_64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu22-cuda12:latest" | |
| runner: ubuntu-latest | |
| - name: Ubuntu-22.04 / CUDA-12.8.1 / ARM64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu22-cuda12:latest" | |
| runner: ubuntu-22.04-arm | |
| - name: Ubuntu-24.04 / CUDA-12.8.1 / x86_64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu24-cuda12:latest" | |
| runner: ubuntu-latest | |
| - name: Ubuntu-24.04 / CUDA-12.8.1 / ARM64 | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu24-cuda12:latest" | |
| runner: ubuntu-24.04-arm | |
| steps: | |
| - name: Compute artifact name | |
| id: test_artifact | |
| run: | | |
| SANITIZED_NAME=$(echo '${{ matrix.variance.name }}' | sed 's/[^a-zA-Z0-9.-]/-/g') | |
| ARTIFACT_NAME="target_debug-${SANITIZED_NAME}-${{ github.run_id }}" | |
| ARTIFACT_PATH="target/debug" | |
| echo "name=${ARTIFACT_NAME}" >> $GITHUB_OUTPUT | |
| echo "path=${ARTIFACT_PATH}" >> $GITHUB_OUTPUT | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ steps.test_artifact.outputs.name }} | |
| path: ${{ steps.test_artifact.outputs.path }} | |
| - name: List downloaded files | |
| run: ls -lR ${{ steps.test_artifact.outputs.path }} | |
| - name: Run remote tests | |
| env: | |
| MODAL_TOKEN_ID: ${{ secrets.MODAL_TOKEN_ID }} | |
| MODAL_TOKEN_SECRET: ${{ secrets.MODAL_TOKEN_SECRET }} | |
| run: | | |
| echo "Stubbed out" | |
| compiletest: | |
| name: Compile tests | |
| runs-on: ubuntu-latest | |
| container: | |
| image: "ghcr.io/rust-gpu/rust-cuda-ubuntu24-cuda12:latest" | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Run cargo version | |
| run: cargo --version | |
| - name: Rustfmt compiletests | |
| shell: bash | |
| run: shopt -s globstar && rustfmt --check tests/compiletests/ui/**/*.rs | |
| - name: Compiletest | |
| run: cargo run -p compiletests --release --no-default-features -- --target-arch compute_61,compute_75,compute_90 |