Build & test for develop on 51e09e8d92cb20ec28b9b1d2a252418f0edbe7ea #266
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: build-and-test | |
run-name: Build & test for ${{ github.ref_name }} on ${{ github.sha }} | |
on: | |
push: | |
branches: | |
- 'main' | |
- 'develop' | |
pull_request: | |
types: [opened, synchronize, reopened] | |
# Cancel previous runs if new changes on PR/branch | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
###### PREPARE WORKFLOW ###### | |
checkout-repository: | |
runs-on: self-hosted | |
steps: | |
- name: Checkout repository code | |
uses: actions/checkout@v4 | |
with: | |
clean: false | |
- name: Clean repository excluding RGL blobs repo | |
run: git clean -ffdx -e external/rgl_blobs | |
- name: Import private extensions | |
run: vcs import < extensions.repos | |
- name: Install taped test runtime dependencies | |
run: ./setup.py --fetch-rgl-blobs | |
load-env: | |
uses: ./.github/workflows/load-env-subworkflow.yml | |
###### BUILD USING RGL DOCKER ###### | |
build-core: | |
needs: [checkout-repository, load-env] | |
runs-on: self-hosted | |
steps: | |
- run: ' | |
docker build --build-context optix=${{ needs.load-env.outputs.optix-install-dir }} | |
--build-arg WITH_PCL=1 --build-arg WITH_ROS2=1 | |
--build-arg BUILD_CMD="./setup.py" | |
--target=exporter --output=bin-core .' | |
build-pcl: | |
needs: [checkout-repository, load-env] | |
runs-on: self-hosted | |
steps: | |
- run: ' | |
docker build --build-context optix=${{ needs.load-env.outputs.optix-install-dir }} | |
--build-arg WITH_PCL=1 --build-arg WITH_ROS2=1 | |
--build-arg BUILD_CMD="./setup.py --with-pcl --build-taped-test" | |
--target=exporter --output=bin-pcl .' | |
build-ros2: | |
needs: [ checkout-repository, load-env ] | |
runs-on: self-hosted | |
steps: | |
- run: ' | |
docker build --build-context optix=${{ needs.load-env.outputs.optix-install-dir }} | |
--build-arg WITH_PCL=1 --build-arg WITH_ROS2=1 | |
--build-arg BUILD_CMD=". /opt/ros/\$ROS_DISTRO/setup.sh && ./setup.py --with-ros2-standalone" | |
--target=exporter --output=bin-ros2 .' | |
build-udp: | |
needs: [ checkout-repository, load-env ] | |
runs-on: self-hosted | |
steps: | |
- run: ' | |
docker build --build-context optix=${{ needs.load-env.outputs.optix-install-dir }} | |
--build-arg WITH_PCL=1 --build-arg WITH_ROS2=1 | |
--build-arg BUILD_CMD="./setup.py --with-udp" | |
--target=exporter --output=bin-udp .' | |
build-weather: | |
needs: [ checkout-repository, load-env ] | |
runs-on: self-hosted | |
steps: | |
- run: ' | |
docker build --build-context optix=${{ needs.load-env.outputs.optix-install-dir }} | |
--build-arg WITH_PCL=1 --build-arg WITH_ROS2=1 | |
--build-arg BUILD_CMD="./setup.py --with-weather" | |
--target=exporter --output=bin-weather .' | |
build-all: | |
needs: [ checkout-repository, load-env ] | |
runs-on: self-hosted | |
steps: | |
- run: ' | |
docker build --build-context optix=${{ needs.load-env.outputs.optix-install-dir }} | |
--build-arg WITH_PCL=1 --build-arg WITH_ROS2=1 | |
--build-arg BUILD_CMD=". /opt/ros/\$ROS_DISTRO/setup.sh && ./setup.py --with-pcl --with-ros2-standalone --with-udp --with-weather --build-taped-test" | |
--target=exporter --output=bin-all .' | |
####### TEST WITH RGL DOCKER IMAGE ###### | |
test-core-dev: | |
needs: [build-core] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
test-command: ' | |
cd bin-core/bin/test && ./RobotecGPULidar_test' | |
docker-image: localhost:5000/robotecgpulidar-all:latest | |
test-pcl-dev: | |
needs: [ build-pcl ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
test-command: ' | |
export RGL_TAPED_TEST_DATA_DIR=$(pwd)/external/rgl_blobs && | |
cd bin-pcl/bin/test && ./RobotecGPULidar_test && ./RobotecGPULidar_taped_test' | |
docker-image: localhost:5000/robotecgpulidar-all:latest | |
test-ros2-dev: | |
needs: [ build-ros2 ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
# Source ROS2 and radar_msgs, standalone build is tested in prod environment | |
# Run tests twice, each for different RMW implementation | |
test-command: ' | |
. /opt/ros/$ROS_DISTRO/setup.sh && | |
. /opt/rgl/external/radar_msgs/install/setup.sh && | |
cd bin-ros2/bin/test && | |
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp && ./RobotecGPULidar_test && | |
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp && ./RobotecGPULidar_test' | |
docker-image: localhost:5000/robotecgpulidar-all:latest | |
test-udp-dev: | |
needs: [ build-udp ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
test-command: ' | |
cd bin-udp/bin/test && ./RobotecGPULidar_test' | |
docker-image: localhost:5000/robotecgpulidar-all:latest | |
test-weather-dev: | |
needs: [ build-weather ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
test-command: ' | |
cd bin-weather/bin/test && ./RobotecGPULidar_test' | |
docker-image: localhost:5000/robotecgpulidar-all:latest | |
test-all-dev: | |
needs: [ build-all ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
# Source ROS2 and radar_msgs, standalone build is tested in prod environment | |
# Set `RGL_TEST_VLP16_CALIB_FILE` for UDP-ROS2 integration test | |
# Run tests twice, each for different RMW implementation | |
test-command: ' | |
. /opt/ros/$ROS_DISTRO/setup.sh && | |
. /opt/rgl/external/radar_msgs/install/setup.sh && | |
export RGL_TEST_VLP16_CALIB_FILE=$(pwd)/extensions/udp/test/resources/Ros2Vlp16Calib.yaml && | |
export RGL_TAPED_TEST_DATA_DIR=$(pwd)/external/rgl_blobs && | |
cd bin-all/bin/test && | |
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp && ./RobotecGPULidar_test && ./RobotecGPULidar_taped_test && | |
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp && ./RobotecGPULidar_test && ./RobotecGPULidar_taped_test' | |
docker-image: localhost:5000/robotecgpulidar-all:latest | |
####### TEST WITH CLEAN UBUNTU DOCKER IMAGE ###### | |
test-core-prod: | |
needs: [build-core] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
test-command: ' | |
cd bin-core/bin/test && ./RobotecGPULidar_test' | |
docker-image: nvidia/cuda:11.7.1-base-ubuntu22.04 | |
test-pcl-prod: | |
needs: [ build-pcl ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
# Additionally, install PCL extension dependent libraries for runtime | |
test-command: ' | |
apt update && apt install -y libxcursor1 libgl1 && | |
export RGL_TAPED_TEST_DATA_DIR=$(pwd)/external/rgl_blobs && | |
cd bin-pcl/bin/test && ./RobotecGPULidar_test && ./RobotecGPULidar_taped_test' | |
docker-image: nvidia/cuda:11.7.1-base-ubuntu22.04 | |
test-ros2-prod: | |
needs: [ build-ros2 ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
# Copy ROS2 libraries to be visible for libRobotecGPULidar.so | |
# Run tests twice, each for different RMW implementation | |
test-command: ' | |
cp -p bin-ros2/lib/ros2_standalone/* bin-ros2/lib && | |
cd bin-ros2/bin/test && | |
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp && ./RobotecGPULidar_test && | |
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp && ./RobotecGPULidar_test' | |
docker-image: nvidia/cuda:11.7.1-base-ubuntu22.04 | |
test-udp-prod: | |
needs: [ build-udp ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
test-command: ' | |
cd bin-udp/bin/test && ./RobotecGPULidar_test' | |
docker-image: nvidia/cuda:11.7.1-base-ubuntu22.04 | |
test-weather-prod: | |
needs: [ build-weather ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
test-command: ' | |
cd bin-weather/bin/test && ./RobotecGPULidar_test' | |
docker-image: nvidia/cuda:11.7.1-base-ubuntu22.04 | |
test-all-prod: | |
needs: [ build-all ] | |
uses: ./.github/workflows/test-subworkflow.yml | |
with: | |
# Install PCL extension dependent libraries for runtime | |
# Copy ROS2 libraries to be visible for libRobotecGPULidar.so | |
# Run tests twice, each for different RMW implementation | |
test-command: ' | |
apt update && apt install -y libxcursor1 libgl1 && | |
export RGL_TAPED_TEST_DATA_DIR=$(pwd)/external/rgl_blobs && | |
cp -p bin-all/lib/ros2_standalone/* bin-all/lib && | |
cd bin-all/bin/test && | |
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp && ./RobotecGPULidar_test && ./RobotecGPULidar_taped_test && | |
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp && ./RobotecGPULidar_test && ./RobotecGPULidar_taped_test' | |
docker-image: nvidia/cuda:11.7.1-base-ubuntu22.04 |