Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into emilk/improve-3d-scro…
Browse files Browse the repository at this point in the history
…ll-to-zoom
  • Loading branch information
Wumpf committed Jun 9, 2023
2 parents 2f3f19a + e4f5f4b commit 84c381f
Show file tree
Hide file tree
Showing 754 changed files with 52,012 additions and 26,755 deletions.
12 changes: 12 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
[alias]
# `cargo rerun` is short a convenient shorthand, skipping the web viewer.
rerun = "run --package rerun-cli --no-default-features --features native_viewer --"
# `cargo rerun-web` is short a convenient shorthand for building & starting the web viewer.
rerun-web = "run --package rerun-cli --no-default-features --features web_viewer -- --web-viewer"

# To easily run examples on the web, see https://github.com/rukai/cargo-run-wasm.
# Temporary solution while we wait for our own xtasks!
run-wasm = "run --release --package run_wasm --"
Expand All @@ -7,3 +12,10 @@ run-wasm = "run --release --package run_wasm --"
# Some of our build.rs files only run if this is set,
# so that we don't run them on cargo publish or on users machines.
IS_IN_RERUN_WORKSPACE = "yes"

# web_sys_unstable_apis is required to enable the web_sys clipboard API which egui_web uses,
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
# as well as WebGPU apis.
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
[target.wasm32-unknown-unknown]
rustflags = ["--cfg=web_sys_unstable_apis"]
3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,8 @@ Steps to reproduce the behavior:
**Desktop (please complete the following information):**
- OS: <!-- e.g. macOS Monterey 12.6 -->

**Rerun version**
<!-- Paste the output of `rerun --version` here. -->

**Additional context**
<!-- Add any other context about the problem here. -->
25 changes: 15 additions & 10 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
### WHAT
copilot:summary
<!--
Open the PR up as a draft until you feel it is ready for a proper review.
Do not make PR:s from your own `main` branch, as that makes it difficult for reviewers to add their own fixes.
Add any improvements to the branch as new commits to make it easier for reviewers to follow the progress. All commits will be squashed to a single commit once the PR is merged into `main`.
Make sure you mention any issues that this PR closes in the description, as well as any other related issues.
### WHY
<!-- author to complete -->
To get an auto-generated PR description you can put "copilot:summary" or "copilot:walkthrough" anywhere.
-->

### HOW
copilot:walkthrough
### What

### Checklist
* [ ] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [ ] I've included a screenshot or gif (if applicable)

<!--
Add any improvements to the branch as new commits to make it easier for reviewers to follow the progress. All commits will be squashed to a single commit once the PR is merged into `main`.
-->
<!-- This line will get updated when the PR build summary job finishes. -->
PR Build Summary: {{ pr-build-summary }}

<!-- This comment will be replaced by a link to the documentation preview -->
76 changes: 76 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Overview

Our CI workflows make heavy usage of [Reusable Workflows](https://docs.github.com/en/actions/using-workflows/reusing-workflows). These reusable workflows can then be tested manually via the `manual_dispatch.yml` workflow.
Or integrated into CI jobs such has `on_pull_request.yml` or `on_main.yml`.

By convention:
- All reusable workflows start with the `reusable_` prefix.
- All workflows that are triggered via `workflow_dispatch` start with the `manual_` prefix.
- All workflows that are triggered via an event start with the `on_` prefix.
- `on_pull_request` is triggered on pull requests.
- `on_push_main` is triggered on pushes to the main branch.

If you are going to be doing any editing of workflows, the
[VS Code extension](https://marketplace.visualstudio.com/items?itemName=cschleiden.vscode-github-actions)
for GitHub Actions is highly recommended.

## Reusable Workflows
- [reusable_checks.yml](reusable_checks.yml) - These are all the checks that run to ensure the code is formatted,
linted, and tested. This job produces no artifacts other than a pass/fail criteria for the build.
- `SAVE_CACHE` - If true, the rust cache will be saved. Generally we only do this for builds on `main`
- [reusable_bench.yml](reusable_bench.yml) - This job runs the benchmarks to check for performance regressions.
- `SAVE_BENCH` - If true, then the benchmark results are saved to update https://ref.rerun.io/dev/bench/
- [reusable_deploy_docs](reusable_deploy_docs.yml) - This job deploys the python and rust documentation to https://ref.rerun.io
- `PY_DOCS_VERSION_NAME` - The name to use for versioning the python docs. This should generally match the version in
`Cargo.toml`.
- `UPDATE_LATEST` - If true, then the docs will be deployed to `latest/` as well as the versioned directory.
- [reusable_build_and_test_wheels.yml](reusable_build_and_test_wheels.yml) - This job builds the wheels, runs the
end-to-end test, and produces a sample RRD. The artifacts are accessible via GitHub artifacts, but not otherwise
uploaded anywhere.
- `MATURIN_FEATURE_FLAGS` - The feature flags to pass to maturin.
- `PLATFORM` - Which platform to build for: `linux`, `macos-arm`, `macos-intel`, or `windows`.
- `RELEASE_VERSION` - If producing a release, the version number. This must match the version in `Cargo.toml`.
- `RRD_ARTIFACT_NAME` - Intermediate name of the GitHub rrd artifact for passing to `reusable_upload_wheels.yml`
- `SAVE_CACHE` - If true, the rust cache will be saved. Generally we only do this for builds on `main`
- `WHEEL_ARTIFACT_NAME` - Intermediate name of the GitHub wheel artifact for passing to `reusable_upload_wheels.yml`
- [reusable_upload_wheels.yml](reusable_upload_wheels.yml) - This job uploads the wheels to google cloud
- `RRD_ARTIFACT_NAME` - Intermediate name of the GitHub rrd artifact. This should match the name passed to
`reusable_build_and_test_wheels.yml`
- `WHEEL_ARTIFACT_NAME` - Intermediate name of the GitHub wheel artifact. This should match the name passed to
`reusable_build_and_test_wheels.yml`
- [reusable_build_web.yml](reusable_build_web.yml) - This job builds the wasm artifacts for the web.
- `RELEASE_VERSION` - If producing a release, the version number. This must match the version in `Cargo.toml`.
- [reusable_upload_web.yml](reusable_upload_web.yml) - This job uploads the web assets to google cloud. By default this
only uploads to: `app.rerun.io/commit/<commit>/`
- `MARK_PRERELEASE_FOR_MAINLINE` - If true, then the web assets will go to `app.rerun.io/prelease/
- `MARK_TAGGED_VERSION` - If true, then the web assets will go to `app.rerun.io/version/<RELEASE_VERSION>`
- `RELEASE_VERSION` - If producing a release, the version number.
- `RRD_ARTIFACT_NAME` - Intermediate name of the GitHub rrd artifact. This should match the name passed to
`reusable_build_and_test_wheels.yml`
- `UPLOAD_COMMIT_OVERRIDE` - If set, will replace the value of `<commit>`. This is necessary because we want pull
request builds associated with their originating commit, even if the web-build happens on an ephemeral merge-commit.
- [reusable_build_web_demo.yml](reusable_build_web.yml) - This job builds the assets uploaded to `demo.rerun.io`.
- `SOURCE_LINK_COMMIT_OVERRIDE` - If set, will replace the value of `<commit>` in the built app. This ensures that the
source source code link in the built app always points to the pull request's `HEAD`.
- [reusable_upload_web_demo.yml](reusable_upload_web_demo.yml) - This job uploads the `demo.rerun.io` assets to google cloud. By default this
only uploads to: `demo.rerun.io/commit/<commit>/`
- `MARK_PRERELEASE_FOR_MAINLINE` - If true, then the web assets will go to `demo.rerun.io/prelease/
- `MARK_TAGGED_VERSION` - If true, then the web assets will go to `demo.rerun.io/version/<RELEASE_VERSION>`
- `RELEASE_VERSION` - If producing a release, the version number.
- `UPLOAD_COMMIT_OVERRIDE` - If set, will replace the value of `<commit>`. This is necessary because we want pull
request builds associated with their originating commit, even if the web-build happens on an ephemeral merge-commit.
- [reusable_pr_summary.yml](reusable_pr_summary.yml) - This job updates the PR summary with the results of the CI run.
- This summary can be found at:
`https://build.rerun.io/pr/<PR_NUMBER>/`
- `PR_NUMBER` - The PR number to update. This will generally be set by the `on_pull_request.yml` workflow using:
`${{github.event.pull_request.number}}`

## Manual Workflows
- [manual_dispatch](manual_dispatch.yml) - This workflow is used to manually trigger the assorted reusable workflows for
testing.
- See the workflow file for the list of parameters.
- [manual_build_wheels_for_pr.yml](manual_build_wheels_for_pr.yml) - This workflow can be dispatched on a branch and
will build all of the wheels for the associated pull-request. Uses:
- [reusable_build_and_test_wheels.yml](reusable_build_and_test_wheels.yml)
- [reusable_upload_wheels.yml](reusable_upload_wheels.yml)
- [reusable_pr_summary.yml](reusable_pr_summary.yml)
35 changes: 35 additions & 0 deletions .github/workflows/documentation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Documentation

on:
pull_request:
push:
branches:
- "main"

permissions:
contents: read

jobs:
spellcheck:
name: Spellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: streetsidesoftware/cspell-action@v2
with:
config: "docs/cspell.json"
files: "docs/**/*.md"
linkinator:
name: linkinator
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: jprochazk/linkinator-action@main
with:
paths: "docs/**/*.md"
linksToSkip: "https://crates.io/crates/rerun"
retry: true
retryErrors: true
retryErrorsCount: 5
retryErrorsJitter: 2000

2 changes: 1 addition & 1 deletion .github/workflows/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ jobs:
with:
mode: minimum
count: 1
labels: "📊 analytics, 🪳 bug, 🧑‍💻 dev experience, 📖 documentation, 💬 discussion, examples, 📉 performance, 🐍 python API, ⛃ re_datastore, 📺 re_viewer, 🔺 re_renderer, ⛴ release, 🦀 rust SDK, 🔨 testing, ui, 🕸️ web"
labels: "📊 analytics, 🪳 bug, 🧑‍💻 dev experience, dependencies, 📖 documentation, 💬 discussion, examples, 📉 performance, 🐍 python API, ⛃ re_datastore, 📺 re_viewer, 🔺 re_renderer, 🚜 refactor, ⛴ release, 🦀 rust SDK, 🔨 testing, ui, 🕸️ web"
70 changes: 70 additions & 0 deletions .github/workflows/manual_adhoc_web.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Run an adhoc web build

on:
workflow_dispatch:
inputs:
EXTRA_FLAGS:
type: string
description: 'Extra flags to pass to `re_build_web_viewer`'
required: false
default: ''
ADHOC_NAME:
type: string
description: 'Name of the stored adhoc build'
required: true

jobs:

min-test-wheel:
name: 'Minimum Test Wheel'
# The upload-web job uses the min-test-wheel to get the RRD
uses: ./.github/workflows/reusable_build_and_test_wheels.yml
with:
CONCURRENCY: adhoc-web-${{ github.event.inputs.ADHOC_NAME }}
PLATFORM: linux
MATURIN_FEATURE_FLAGS: '--no-default-features --features extension-module'
WHEEL_ARTIFACT_NAME: linux-wheel
RRD_ARTIFACT_NAME: linux-rrd-fast
secrets: inherit

build-web-adhoc:
name: 'Build Web'
uses: ./.github/workflows/reusable_build_web.yml
with:
CONCURRENCY: adhoc-web-${{ github.event.inputs.ADHOC_NAME }}
EXTRA_FLAGS: ${{ github.event.inputs.EXTRA_FLAGS }}
secrets: inherit

upload-web:
name: 'Upload Web'
needs: [min-test-wheel, build-web-adhoc]
uses: ./.github/workflows/reusable_upload_web.yml
with:
CONCURRENCY: adhoc-web-${{ github.event.inputs.ADHOC_NAME }}
MARK_PRERELEASE_FOR_MAINLINE: false
MARK_TAGGED_VERSION: false
ADHOC_NAME: ${{ github.event.inputs.ADHOC_NAME }}
RRD_ARTIFACT_NAME: linux-rrd-fast
UPLOAD_COMMIT: false
secrets: inherit

build-web-demo-adhoc:
name: 'Build Web Demo'
needs: [min-test-wheel, build-web-adhoc]
uses: ./.github/workflows/reusable_build_web_demo.yml
with:
CONCURRENCY: adhoc-web-${{ github.event.inputs.ADHOC_NAME }}
WHEEL_ARTIFACT_NAME: linux-wheel
secrets: inherit

upload-web-demo:
name: 'Upload Web Demo'
needs: [build-web-demo-adhoc]
uses: ./.github/workflows/reusable_upload_web_demo.yml
with:
CONCURRENCY: adhoc-web-${{ github.event.inputs.ADHOC_NAME }}
MARK_PRERELEASE_FOR_MAINLINE: false
MARK_TAGGED_VERSION: false
ADHOC_NAME: ${{ github.event.inputs.ADHOC_NAME }}
UPLOAD_COMMIT: false
secrets: inherit
143 changes: 143 additions & 0 deletions .github/workflows/manual_build_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
name: Build all artifacts for Release

on:
workflow_dispatch:
inputs:
RELEASE_VERSION:
description: 'Release Version Number (Must match Cargo.toml)'
type: string
required: true

jobs:

build-linux:
name: 'Linux: Build/Test Wheels'
uses: ./.github/workflows/reusable_build_and_test_wheels.yml
with:
CONCURRENCY: manual-wheels-linux-prerelease
PLATFORM: linux
WHEEL_ARTIFACT_NAME: linux-wheel
RRD_ARTIFACT_NAME: linux-rrd
RELEASE_VERSION: ${{ github.event.inputs.RELEASE_VERSION }}
secrets: inherit

build-windows:
name: 'Windows: Build/Test Wheels'
uses: ./.github/workflows/reusable_build_and_test_wheels.yml
with:
CONCURRENCY: manual-wheels-windows-prerelease
PLATFORM: windows
WHEEL_ARTIFACT_NAME: windows-wheel
RRD_ARTIFACT_NAME: ''
RELEASE_VERSION: ${{ github.event.inputs.RELEASE_VERSION }}
secrets: inherit

build-macos-arm:
name: 'Macos-Arm: Build/Test Wheels'
uses: ./.github/workflows/reusable_build_and_test_wheels.yml
with:
CONCURRENCY: manual-wheels-macos-arm-prerelease
PLATFORM: macos-arm
WHEEL_ARTIFACT_NAME: macos-arm-wheel
RRD_ARTIFACT_NAME: ''
RELEASE_VERSION: ${{ github.event.inputs.RELEASE_VERSION }}
secrets: inherit

build-macos-intel:
name: 'Macos-Intel: Build/Test Wheels'
uses: ./.github/workflows/reusable_build_and_test_wheels.yml
with:
CONCURRENCY: manual-wheels-macos-intel-prerelease
PLATFORM: macos-intel
WHEEL_ARTIFACT_NAME: 'macos-intel-wheel'
RRD_ARTIFACT_NAME: ''
RELEASE_VERSION: ${{ github.event.inputs.RELEASE_VERSION }}
secrets: inherit

upload-wheels-linux:
name: 'Linux: Upload Wheels'
needs: [build-linux]
uses: ./.github/workflows/reusable_upload_wheels.yml
with:
CONCURRENCY: manual-upload-wheels-linux-prerelease
WHEEL_ARTIFACT_NAME: linux-wheel
RRD_ARTIFACT_NAME: linux-rrd
secrets: inherit

upload-wheels-windows:
name: 'Windows: Upload Wheels'
needs: [build-linux, build-windows]
uses: ./.github/workflows/reusable_upload_wheels.yml
with:
CONCURRENCY: manual-upload-wheels-windows-prerelease
WHEEL_ARTIFACT_NAME: windows-wheel
RRD_ARTIFACT_NAME: linux-rrd
secrets: inherit

upload-wheels-macos-arm:
name: 'Macos-Arm: Upload Wheels'
needs: [build-linux, build-macos-arm]
uses: ./.github/workflows/reusable_upload_wheels.yml
with:
CONCURRENCY: manual-upload-wheels-macos-arm-prerelease
WHEEL_ARTIFACT_NAME: macos-arm-wheel
RRD_ARTIFACT_NAME: linux-rrd
secrets: inherit

upload-wheels-macos-intel:
name: 'Macos-Intel: Upload Wheels'
needs: [build-linux, build-macos-intel]
uses: ./.github/workflows/reusable_upload_wheels.yml
with:
CONCURRENCY: manual-upload-wheels-macos-intel-prerelease
WHEEL_ARTIFACT_NAME: macos-intel-wheel
RRD_ARTIFACT_NAME: linux-rrd
secrets: inherit

build-web:
name: 'Build Web'
uses: ./.github/workflows/reusable_build_web.yml
with:
CONCURRENCY: manual-dispatch-${{ github.run_id}}
RELEASE_VERSION: ${{ github.event.inputs.RELEASE_VERSION }}
secrets: inherit

upload-web:
name: 'Upload Web'
needs: [build-linux, build-web]
uses: ./.github/workflows/reusable_upload_web.yml
with:
CONCURRENCY: manual-dispatch-${{ github.run_id}}
MARK_PRERELEASE_FOR_MAINLINE: false
MARK_TAGGED_VERSION: true
RRD_ARTIFACT_NAME: linux-rrd
RELEASE_VERSION: ${{ github.event.inputs.RELEASE_VERSION }}
secrets: inherit

build-web-demo:
name: 'Build Web Demo'
needs: [build-linux, build-web]
uses: ./.github/workflows/reusable_build_web_demo.yml
with:
CONCURRENCY: manual-dispatch-${{ github.run_id}}
WHEEL_ARTIFACT_NAME: linux-wheel
secrets: inherit

upload-web-demo:
name: 'Upload Web'
needs: [build-web-demo]
uses: ./.github/workflows/reusable_upload_web_demo.yml
with:
CONCURRENCY: manual-dispatch-${{ github.run_id}}
MARK_PRERELEASE_FOR_MAINLINE: false
MARK_TAGGED_VERSION: true
RELEASE_VERSION: ${{ github.event.inputs.RELEASE_VERSION }}
secrets: inherit

generate-wheel-index:
name: 'Generate Pip Index'
needs: [upload-wheels-linux, upload-wheels-windows, upload-wheels-macos-arm, upload-wheels-macos-intel]
uses: ./.github/workflows/reusable_pip_index.yml
with:
CONCURRENCY: manual-index-wheels-prerelease
secrets: inherit
Loading

0 comments on commit 84c381f

Please sign in to comment.