253 lines
9.7 KiB
YAML
253 lines
9.7 KiB
YAML
# 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
|