# Jobs that only run for developers on the `rerun` team. # We have to ensure that these jobs _only_ run for PRs inside the `rerun-io` organization # this is done using the following check, added to every job: # if: github.event.pull_request.head.repo.owner.login == 'rerun-io' # (unfortunately this does not work on the trigger or the entire `jobs` category) name: Pull-Request on: pull_request: types: - opened - synchronize permissions: write-all # These jobs use fairly short names as they are a prefix in the display hierarchy jobs: checks: name: Checks if: github.event.pull_request.head.repo.owner.login == 'rerun-io' uses: ./.github/workflows/reusable_checks.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} CHANNEL: pr secrets: inherit paths-filter: if: github.event.pull_request.head.repo.owner.login == 'rerun-io' runs-on: ubuntu-latest outputs: cpp_changes: ${{ steps.filter.outputs.cpp_changes }} docs_changes: ${{ steps.filter.outputs.docs_changes }} python_changes: ${{ steps.filter.outputs.python_changes }} rust_changes: ${{ steps.filter.outputs.rust_changes }} protobuf_changes: ${{ steps.filter.outputs.protobuf_changes }} web_changes: ${{ steps.filter.outputs.web_changes }} steps: - uses: actions/checkout@v4 with: ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || '' }} - uses: dorny/paths-filter@v3 id: filter with: filters: | cpp_changes: # - .github/**/*.yml - this is tempting, but leads to constant rebuilds - crates/top/rerun_c/**/* - pixi.lock # maybe our build commands have changed - pixi.toml # maybe our build commands have changed - scripts/ci/**/* - '**/*.cpp' - '**/*.hpp' - '**/*cmake' - '**/CMakeLists.txt' docs_changes: # - .github/**/*.yml - this is tempting, but leads to constant rebuilds - .github/actions/vercel/**/* - pixi.lock # maybe our build commands have changed - pixi.toml # maybe our build commands have changed - scripts/ci/* - 'docs/content/**/*.md' - 'examples/**/*.md' - 'examples/manifest.toml' python_changes: # - .github/**/*.yml - this is tempting, but leads to constant rebuilds - pixi.lock # maybe our build commands have changed - pixi.toml # maybe our build commands have changed - scripts/ci/* - '**/*.py' - '**/*.pyi' - '**/requirements.txt' - '**/pyproject.toml' rust_changes: # - .github/**/*.yml - this is tempting, but leads to constant rebuilds - Cargo.lock - crates/viewer/re_ui/data/**/* # parts of data are imported into the viewer and has ramifications on various tests - pixi.lock # maybe our build commands have changed - pixi.toml # maybe our build commands have changed - "**/*.rs" # wgsl is embedded into Rust binaries and should trigger tests. - "rerun/**/*.wgsl" - "**/*.toml" - "crates/**/*.png" - "tests/rust/**/*.png" protobuf_changes: # - .github/**/*.yml - this is tempting, but leads to constant rebuilds - "**/**.proto" - pixi.lock # maybe our build commands have changed - pixi.toml # maybe our build commands have changed - scripts/ci/* - "**/*.toml" web_changes: # - .github/**/*.yml - this is tempting, but leads to constant rebuilds - Cargo.lock - pixi.lock # maybe our build commands have changed - pixi.toml # maybe our build commands have changed - scripts/ci/* - "**/*.html" - "**/*.js" - "**/*.mjs" - "**/*.json" - "**/*.rs" - "**/*.toml" - "**/yarn.lock" - "crates/viewer/re_ui/data/**" protobuf-checks: name: "Protobuf Checks" needs: [paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.protobuf_changes == 'true' uses: ./.github/workflows/reusable_checks_protobuf.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} secrets: inherit rust-checks: name: "Rust Checks" needs: [paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.rust_changes == 'true' uses: ./.github/workflows/reusable_checks_rust.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} CHANNEL: main # We run the full test suite here, because we've had so many breakages secrets: inherit python-checks: name: "Python Checks" needs: [paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.python_changes == 'true' uses: ./.github/workflows/reusable_checks_python.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} secrets: inherit cpp-tests: name: "C++ tests" needs: [paths-filter] if: needs.paths-filter.outputs.cpp_changes == 'true' uses: ./.github/workflows/reusable_checks_cpp.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} CHANNEL: pr secrets: inherit cli-build: name: "Rerun CLI Build" needs: [paths-filter] if: needs.paths-filter.outputs.python_changes == 'true' || needs.paths-filter.outputs.rust_changes == 'true' uses: ./.github/workflows/reusable_build_and_upload_rerun_cli.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} PLATFORM: linux-x64 secrets: inherit # Build and test a single wheel to limit CI cost. We use linux-x64 because it's fast. linux-arm64 would also be a good # choice, but reusable_test_wheels.yml is broken for that target (https://github.com/rerun-io/rerun/issues/5525) min-wheel-build: name: "Minimum Wheel Build" needs: [cli-build, paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && (needs.paths-filter.outputs.python_changes == 'true' || needs.paths-filter.outputs.rust_changes == 'true') uses: ./.github/workflows/reusable_build_and_upload_wheels.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} MODE: "pr" PLATFORM: linux-x64 WHEEL_ARTIFACT_NAME: "linux-x64-wheel-fast" secrets: inherit min-wheel-test: name: "Minimum Wheel Test" needs: [min-wheel-build, paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && (needs.paths-filter.outputs.python_changes == 'true' || needs.paths-filter.outputs.rust_changes == 'true') uses: ./.github/workflows/reusable_test_wheels.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} PLATFORM: linux-x64 WHEEL_ARTIFACT_NAME: "linux-x64-wheel-fast" FAST: true secrets: inherit build-js: name: "Build rerun_js" needs: [paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.web_changes == 'true' uses: ./.github/workflows/reusable_build_js.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} secrets: inherit build-web: name: "Build web viewer" if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.web_changes == 'true' needs: [paths-filter] uses: ./.github/workflows/reusable_build_web.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} CHANNEL: main secrets: inherit web-test: name: "Web tests" needs: [paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.web_changes == 'true' uses: ./.github/workflows/reusable_web_test.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} secrets: inherit upload-web: name: "Upload Web" needs: [build-web] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' uses: ./.github/workflows/reusable_upload_web.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} PR_NUMBER: ${{ github.event.pull_request.number }} secrets: inherit upload-js: name: "Upload JS" needs: [build-js] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' uses: ./.github/workflows/reusable_upload_js.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} PR_NUMBER: ${{ github.event.pull_request.number }} secrets: inherit deploy-landing-preview: name: "Deploy Landing Preview" needs: [paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.docs_changes == 'true' uses: ./.github/workflows/reusable_deploy_landing_preview.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} PR_NUMBER: ${{ github.event.pull_request.number }} secrets: inherit check-doc-redirects: name: "Check Doc Redirects" needs: [paths-filter] if: github.event.pull_request.head.repo.owner.login == 'rerun-io' && needs.paths-filter.outputs.docs_changes == 'true' uses: ./.github/workflows/reusable_checks_doc_redirects.yml with: CONCURRENCY: pr-${{ github.event.pull_request.number }} secrets: inherit