Build & test for develop on 5a098ad14e9425c322159ba18d58625a3a40a4c2 #259
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 |