rust: Replace HashSet<TopicByChannel> with a HashMap #587
Workflow file for this run
This file contains 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: | |
push: | |
branches: [main] | |
tags: ["*"] | |
pull_request: | |
branches: ["*"] | |
jobs: | |
rust: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install common dependencies | |
uses: ./.github/actions/common-deps | |
# Recent version of protoc required on ubuntu <24 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
version: "28.2" | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- name: Ensure generated protobuf schemas are up to date | |
run: cargo run --bin foxglove-proto-gen && git diff --exit-code | |
- run: cargo fmt --all --check | |
- run: cargo build --verbose | |
- run: cargo clippy --no-deps --all-targets --tests -- -D warnings | |
- run: cargo test --features unstable --verbose | |
timeout-minutes: 10 | |
- run: cargo publish --package foxglove --dry-run | |
- run: cargo publish --package foxglove | |
if: startsWith(github.ref, 'refs/tags/rust/v') | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
python: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install common dependencies | |
uses: ./.github/actions/common-deps | |
# Recent version of protoc required on ubuntu <24 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
version: "28.2" | |
- run: poetry check | |
working-directory: python/foxglove-sdk | |
- run: poetry install | |
working-directory: python/foxglove-sdk | |
- run: poetry run maturin develop | |
working-directory: python/foxglove-sdk | |
- run: poetry run mypy . | |
working-directory: python/foxglove-sdk | |
- name: Run black check | |
run: poetry run black . --check | |
working-directory: python/foxglove-sdk | |
- name: Run flake8 | |
run: poetry run flake8 . | |
working-directory: python/foxglove-sdk | |
wheels: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: | |
- aarch64 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install common dependencies | |
uses: ./.github/actions/common-deps | |
# Recent version of protoc required on ubuntu <24 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
version: "28.2" | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 | |
- run: poetry install | |
working-directory: python/foxglove-sdk | |
- run: poetry run maturin build --release | |
working-directory: python/foxglove-sdk | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.target }} | |
path: target/wheels | |
typescript: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- run: corepack enable | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: yarn | |
registry-url: https://registry.npmjs.org | |
- name: Install Flatbuffer compiler | |
run: | | |
curl -LO https://github.com/google/flatbuffers/releases/download/v23.1.21/Linux.flatc.binary.clang++-12.zip | |
echo "359dbbf56153cc1b022170a228adfde4199f67dc Linux.flatc.binary.clang++-12.zip" | shasum -a 1 -c | |
unzip Linux.flatc.binary.clang++-12.zip | |
rm Linux.flatc.binary.clang++-12.zip | |
sudo mv flatc /usr/local/bin | |
- uses: arduino/setup-protoc@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: yarn install --immutable | |
- run: yarn lint:ci | |
- run: yarn typecheck | |
- run: yarn test | |
- run: yarn update-generated-files | |
- name: Ensure generated files are up to date | |
run: | | |
git add --all | |
changes=$(git status --porcelain) | |
if [ -n "$changes" ]; then | |
echo "::error::The following generated files need to be updated. Run 'yarn update-generated-files' to update them." | |
echo "$changes" | |
echo "" | |
git diff --cached | |
exit 1 | |
else | |
echo "Generated schemas are up to date!" | |
fi | |
- name: Validate Flatbuffer definitions | |
run: | | |
output=$(flatc --require-explicit-ids --ts -o /dev/null ./schemas/flatbuffer/*.fbs) | |
if [ -n "$output" ]; then | |
echo "::error::Flatbuffer schema compilation had warnings or errors. Fix them to proceed:" | |
echo "$output" | |
exit 1 | |
fi | |
- name: Validate protobuf definitions | |
run: protoc --proto_path=schemas/proto schemas/proto/**/*.proto --descriptor_set_out=/dev/null | |
- name: Publish to NPM | |
if: startsWith(github.ref, 'refs/tags/typescript/v') | |
run: yarn publish --access public | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} | |
python-legacy: | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- run: pipx install poetry | |
- uses: arduino/setup-protoc@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Flatbuffer compiler | |
run: | | |
curl -LO https://github.com/google/flatbuffers/releases/download/v23.1.21/Linux.flatc.binary.clang++-12.zip | |
echo "359dbbf56153cc1b022170a228adfde4199f67dc Linux.flatc.binary.clang++-12.zip" | shasum -a 1 -c | |
unzip Linux.flatc.binary.clang++-12.zip | |
rm Linux.flatc.binary.clang++-12.zip | |
sudo mv flatc /usr/local/bin | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.9' | |
cache: poetry | |
- run: poetry install | |
- run: poetry run black --check . | |
- run: poetry run flake8 . | |
- run: make install | |
working-directory: python | |
- run: make build | |
working-directory: python | |
- run: make test | |
working-directory: python | |
- name: Publish foxglove-schemas-flatbuffer to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
if: | | |
!github.event.pull_request.head.repo.fork && | |
github.actor != 'dependabot[bot]' | |
with: | |
packages-dir: python/foxglove-schemas-flatbuffer/dist | |
repository-url: https://test.pypi.org/legacy/ | |
skip-existing: true | |
attestations: false # https://github.com/pypa/gh-action-pypi-publish/issues/283#issuecomment-2499296440 | |
- name: Publish foxglove-schemas-flatbuffer to PyPI | |
if: startsWith(github.ref, 'refs/tags/python/foxglove-schemas-flatbuffer/v') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: python/foxglove-schemas-flatbuffer/dist | |
- name: Publish foxglove-schemas-protobuf to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
if: | | |
!github.event.pull_request.head.repo.fork && | |
github.actor != 'dependabot[bot]' | |
with: | |
packages-dir: python/foxglove-schemas-protobuf/dist | |
repository-url: https://test.pypi.org/legacy/ | |
skip-existing: true | |
attestations: false # https://github.com/pypa/gh-action-pypi-publish/issues/283#issuecomment-2499296440 | |
- name: Publish foxglove-schemas-protobuf to PyPI | |
if: startsWith(github.ref, 'refs/tags/python/foxglove-schemas-protobuf/v') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: python/foxglove-schemas-protobuf/dist | |
ros: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- docker_image: rostooling/setup-ros-docker:ubuntu-focal-ros-noetic-ros-base-latest | |
ros_distribution: noetic | |
ros_version: 1 | |
- docker_image: rostooling/setup-ros-docker:ubuntu-focal-ros-foxy-ros-base-latest | |
ros_distribution: foxy | |
ros_version: 2 | |
- docker_image: rostooling/setup-ros-docker:ubuntu-focal-ros-galactic-ros-base-latest | |
ros_distribution: galactic | |
ros_version: 2 | |
- docker_image: rostooling/setup-ros-docker:ubuntu-jammy-ros-humble-ros-base-latest | |
ros_distribution: humble | |
ros_version: 2 | |
- docker_image: rostooling/setup-ros-docker:ubuntu-jammy-ros-iron-ros-base-latest | |
ros_distribution: iron | |
ros_version: 2 | |
- docker_image: rostooling/setup-ros-docker:ubuntu-jammy-ros-rolling-ros-base-latest | |
ros_distribution: rolling | |
ros_version: 2 | |
name: "ROS ${{ matrix.ros_distribution }}" | |
container: | |
image: ${{ matrix.docker_image }} | |
steps: | |
- name: setup directories | |
run: mkdir -p ros_ws/src | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
path: ros_ws/src | |
- name: build and test ros1 | |
if: matrix.ros_version == 1 | |
uses: ros-tooling/action-ros-ci@master | |
with: | |
package-name: foxglove_msgs | |
target-ros1-distro: ${{ matrix.ros_distribution }} | |
vcs-repo-file-url: "" | |
- name: Downgrade pydocstyle as a workaround for ament_lint error https://github.com/ament/ament_lint/pull/428 | |
if: matrix.ros_distribution == 'galactic' | |
run: | | |
sudo pip install pydocstyle==6.1.1 | |
- name: Downgrade pytest as a workaround for https://github.com/scientific-python/pytest-doctestplus/issues/240 | |
if: matrix.ros_distribution == 'humble' || matrix.ros_distribution == 'iron' || matrix.ros_distribution == 'rolling' | |
run: | | |
sudo pip install pytest==8.0.2 | |
- name: build and test ros2 | |
if: matrix.ros_version == 2 | |
uses: ros-tooling/action-ros-ci@master | |
with: | |
package-name: foxglove_msgs | |
target-ros2-distro: ${{ matrix.ros_distribution }} | |
vcs-repo-file-url: "" |