Prepare repo for incoming sdk #529
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: ["releases/**"] | |
pull_request: | |
branches: ["*"] | |
jobs: | |
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/releases/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: make install | |
working-directory: python | |
- run: make build | |
working-directory: python | |
- run: make test | |
working-directory: python | |
- run: poetry run flake8 . | |
- 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: | | |
!github.event.pull_request.head.repo.fork && | |
github.actor != 'dependabot[bot]' && | |
startsWith(github.ref, 'refs/tags/releases/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: | | |
!github.event.pull_request.head.repo.fork && | |
github.actor != 'dependabot[bot]' && | |
startsWith(github.ref, 'refs/tags/releases/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: "" |