-
Notifications
You must be signed in to change notification settings - Fork 28
186 lines (169 loc) · 6.84 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
name: CI
on:
push:
branches: [main]
tags: ["releases/**"]
pull_request:
branches: ["*"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- 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 }}
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
registry-url: https://registry.npmjs.org
- 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: |
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"
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:
runs-on: ubuntu-latest
defaults:
run:
working-directory: python
permissions:
id-token: write
steps:
- uses: actions/checkout@v3
- 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@v4
with:
python-version: 3.7
cache: pipenv
- run: pip install pipenv==2022.7.24
- run: make test
- run: make build
- 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
- 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
- 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@v3
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: ""