diff --git a/.github/workflows/bloom.yml b/.github/workflows/bloom.yml
new file mode 100644
index 000000000..d3522e523
--- /dev/null
+++ b/.github/workflows/bloom.yml
@@ -0,0 +1,50 @@
+name: bloom
+
+on: [push, pull_request]
+
+jobs:
+ build_linux:
+ name: "Ubuntu (${{ matrix.ros_distribution }})"
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ include:
+ - docker_image: ubuntu:22.04
+ ros_distribution: humble
+
+ - docker_image: ubuntu:24.04
+ ros_distribution: jazzy
+
+ container:
+ image: ${{ matrix.docker_image }}
+
+ env:
+ DEBIAN_FRONTEND: noninteractive
+
+ steps:
+ - name: install core dependencies
+ run: |
+ apt update
+ apt install -y --no-install-recommends git ca-certificates
+
+ - uses: actions/checkout@v4
+
+ - uses: ros-tooling/setup-ros@v0.7
+
+ - name: install build tool dependencies
+ run: |
+ apt install -y --no-install-recommends devscripts equivs python3-bloom
+
+ - name: bloom
+ run: |
+ rosdep update
+ bloom-generate rosdebian --ros-distro ${{ matrix.ros_distribution }}
+ mk-build-deps
+ apt install -y --no-install-recommends ./ros-${{ matrix.ros_distribution }}-*-build-deps_*_all.deb
+ dpkg-buildpackage -b
+
+ - name: install bloomed packages
+ run: |
+ apt install -y --no-install-recommends ../ros-${{ matrix.ros_distribution }}-*_*.deb ../ros-${{ matrix.ros_distribution }}-*-dbgsym_*.ddeb
diff --git a/package.xml b/package.xml
index fd51d3960..05107eed8 100644
--- a/package.xml
+++ b/package.xml
@@ -17,6 +17,7 @@
libpng-dev
libturbojpeg
libxkbcommon-dev
+ opengl
wayland-dev
wayland