Skip to content

Tests: enable range_gate in reorder unit test #100

Tests: enable range_gate in reorder unit test

Tests: enable range_gate in reorder unit test #100

Workflow file for this run

name: CI
on:
push:
branches: [ trunk ]
pull_request:
branches: [ trunk, main, '**' ]
schedule:
- cron: '17 3 * * *'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
changes:
name: Detect Changes
runs-on: ubuntu-22.04
outputs:
code: ${{ steps.filter.outputs.code }}
mapping: ${{ steps.filter.outputs.mapping }}
tests: ${{ steps.filter.outputs.tests }}
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
filters: |
code:
- 'alpha_ws/**'
- 'alpha_configs/**'
- 'scripts/**'
- 'deploy/**'
- '.github/workflows/ci.yml'
- '!**/*.md'
mapping:
- 'alpha_ws/src/alpha_mapping/**'
- 'alpha_ws/src/**/alpha_mapping*'
tests:
- 'alpha_ws/src/**/test/**'
docs:
name: Docs Validation
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install pre-commit
run: pipx install pre-commit
- name: Run pre-commit (agents index + validate)
env:
AGENTS_INDEX_NO_DATE: "1"
run: |
pre-commit run --all-files || (echo 'Expected to update docs/AGENTS_INDEX.md; please commit.' && git --no-pager diff && exit 1)
build:
name: ROS 2 Build (Humble)
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.code == 'true'
env:
ALPHA_WS: alpha_ws
PKG_TARGET: ""
steps:
- uses: actions/checkout@v4
- name: Setup ROS 2 apt sources
uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: humble
- name: Install base build tools
run: |
sudo apt-get update
sudo apt-get install -y \
ros-humble-ros-base \
ros-humble-pluginlib \
ros-humble-rclpy \
ros-humble-rclcpp \
ros-humble-std-msgs \
ros-humble-sensor-msgs \
python3-colcon-common-extensions \
python3-colcon-ros \
ros-dev-tools \
build-essential \
cmake \
python3-setuptools \
python3-pip \
python3-wheel \
python3-rosdep \
libyaml-cpp-dev \
libcurl4-openssl-dev \
python3-pytest \
ros-humble-std-srvs \
ros-humble-diagnostic-msgs
python3 -m pip install --user --upgrade pip
python3 -m pip install --user pyyaml jsonschema pytest
- name: Resolve ROS package deps (rosdep)
shell: bash
run: |
set -euxo pipefail
# Initialize rosdep databases if needed
sudo rosdep init || true
# Retry rosdep update in case of transient network hiccups
for i in 1 2 3; do
if rosdep update; then
break
fi
echo "rosdep update failed (attempt $i). Retrying..."
sleep 5
done
# Attempt to install dependencies from package.xml files
set +e
rosdep install --rosdistro humble --from-paths "$ALPHA_WS" -i -y
rc=$?
set -e
if [ $rc -ne 0 ]; then
echo "::warning::rosdep install failed with code $rc. Falling back to apt for common ROS deps."
sudo apt-get update
sudo apt-get install -y \
ros-humble-rosidl-default-generators \
ros-humble-rosidl-default-runtime \
ros-humble-std-msgs \
ros-humble-diagnostic-msgs \
ros-humble-rclpy \
python3-yaml || true
fi
- name: Show discovered packages
shell: bash
run: |
cd "$ALPHA_WS" || exit 0
colcon list || true
- name: Build (core packages; skip alpha_mapping)
shell: bash
run: |
set -euo pipefail
# Work around ROS 2 setup scripts referencing unset vars under -u
set +u
source /opt/ros/humble/setup.bash
set -u
cd "$ALPHA_WS"
colcon build --merge-install \
--packages-skip alpha_mapping \
--cmake-args -DCMAKE_BUILD_TYPE=Release
- name: Validate configs (jsonschema)
shell: bash
run: |
# Run config schema validation from repo root
python3 scripts/validate_configs.py
# Skip colcon test for now; rely on targeted pytest step below
- name: Unit tests (gating)
shell: bash
run: |
set -euo pipefail
# Source ROS 2 and the built workspace so generated Python interfaces are importable
set +u
source /opt/ros/humble/setup.bash
[ -f alpha_ws/install/setup.bash ] && source alpha_ws/install/setup.bash
set -u
# Run package unit tests directly with pytest
python3 -m pytest -m unit -q
mapping-build:
name: ROS 2 Build (Humble) — mapping (non-gating)
needs: changes
if: ${{ needs.changes.outputs.mapping == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-22.04
continue-on-error: true
env:
ALPHA_WS: alpha_ws
steps:
- uses: actions/checkout@v4
- name: Setup ROS 2 apt sources
uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: humble
- name: Install base build tools (mapping)
run: |
sudo apt-get update
sudo apt-get install -y \
ros-humble-ros-base \
ros-humble-pluginlib \
ros-humble-rclcpp \
ros-humble-sensor-msgs \
ros-humble-std-msgs \
python3-colcon-common-extensions \
python3-colcon-ros \
ros-dev-tools \
build-essential \
cmake \
python3-setuptools \
python3-pip \
python3-wheel \
python3-rosdep \
libyaml-cpp-dev \
libcurl4-openssl-dev \
python3-pytest \
ros-humble-std-srvs \
ros-humble-diagnostic-msgs
python3 -m pip install --user --upgrade pip
python3 -m pip install --user pyyaml jsonschema pytest
- name: Resolve mapping deps (rosdep)
run: |
sudo rosdep init || true
rosdep update || true
rosdep install --rosdistro humble --from-paths "$ALPHA_WS/src/alpha_mapping" -i -y || true
- name: Build alpha_mapping only (Release)
run: |
set +u
source /opt/ros/humble/setup.bash
set -u
cd "$ALPHA_WS"
colcon build --merge-install \
--packages-select alpha_mapping \
--cmake-args -DCMAKE_BUILD_TYPE=Release 2>&1 | tee ../mapping-build.log
- name: Upload mapping build log
if: always()
uses: actions/upload-artifact@v4
with:
name: mapping-build-log
path: mapping-build.log
integration-tests:
name: Integration tests (non-gating)
needs: changes
if: ${{ needs.changes.outputs.tests == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-22.04
continue-on-error: true
env:
ALPHA_WS: alpha_ws
steps:
- uses: actions/checkout@v4
- name: Setup ROS 2 apt sources
uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: humble
- name: Install base build tools (integration)
run: |
sudo apt-get update
sudo apt-get install -y \
ros-humble-ros-base \
ros-humble-pluginlib \
ros-humble-rclpy \
ros-humble-rclcpp \
ros-humble-std-msgs \
ros-humble-sensor-msgs \
python3-colcon-common-extensions \
python3-colcon-ros \
ros-dev-tools \
build-essential \
cmake \
python3-setuptools \
python3-pip \
python3-wheel \
python3-rosdep \
libyaml-cpp-dev \
libcurl4-openssl-dev \
python3-pytest \
ros-humble-std-srvs \
ros-humble-diagnostic-msgs
python3 -m pip install --user --upgrade pip
python3 -m pip install --user pyyaml jsonschema pytest
- name: Resolve deps (workspace)
run: |
sudo rosdep init || true
rosdep update || true
rosdep install --rosdistro humble --from-paths "$ALPHA_WS/src" -i -y || true
- name: Build (Release, merge-install)
run: |
set +u
source /opt/ros/humble/setup.bash
set -u
cd "$ALPHA_WS"
colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=Release
- name: Run integration tests (pytest -m integration)
run: |
set +u
source /opt/ros/humble/setup.bash
source alpha_ws/install/setup.bash
set -u
python3 -m pytest -m integration -q || true