Skip to content

Generate pyo3 schemas for SDK #747

Generate pyo3 schemas for SDK

Generate pyo3 schemas for SDK #747

Workflow file for this run

name: CI
on:
push:
branches: [main]
tags: ["**"]
pull_request: {}
jobs:
rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install common dependencies
uses: ./.github/actions/common-deps
- uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: "29.x"
- 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/sdk/v')
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
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@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: "29.x"
- run: yarn install --immutable
- run: yarn lint:ci
# must run this first because it copies the jsonschema directory
- run: yarn workspace @foxglove/schemas build
# typecheck remaining files in the repo
- run: yarn build
- run: yarn test
- name: Ensure generated files are up to date
run: |
yarn update-generated-files
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 npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
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: ""