Skip to content

Build & test for 294/merge on 8890bf0d358b4df112710d5b14f8438db0fcaa61 #169

Build & test for 294/merge on 8890bf0d358b4df112710d5b14f8438db0fcaa61

Build & test for 294/merge on 8890bf0d358b4df112710d5b14f8438db0fcaa61 #169

Workflow file for this run

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@v3
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="source /opt/ros/humble/setup.bash && ./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-snow:
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-snow"
--target=exporter --output=bin-snow .'
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="./setup.py --with-pcl --with-ros2-standalone --with-udp --with-snow --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 && mkdir test-dev && cd test-dev &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so . &&
./RobotecGPULidar_test'
docker-image: localhost:5000/rgl: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 && mkdir test-dev && cd test-dev &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so ../test/taped_test/RobotecGPULidar_taped_test . &&
./RobotecGPULidar_test && ./RobotecGPULidar_taped_test'
docker-image: localhost:5000/rgl: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: '
source /opt/ros/humble/setup.bash &&
source /rgldep/radar_msgs/install/setup.bash &&
cd bin-ros2 && mkdir test-dev && cd test-dev &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so . &&
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp && ./RobotecGPULidar_test &&
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp && ./RobotecGPULidar_test'
docker-image: localhost:5000/rgl:latest
test-udp-dev:
needs: [ build-udp ]
uses: ./.github/workflows/test-subworkflow.yml
with:
test-command: '
cd bin-udp && mkdir test-dev && cd test-dev &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so . &&
./RobotecGPULidar_test'
docker-image: localhost:5000/rgl:latest
test-snow-dev:
needs: [ build-snow ]
uses: ./.github/workflows/test-subworkflow.yml
with:
test-command: '
cd bin-snow && mkdir test-dev && cd test-dev &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so . &&
./RobotecGPULidar_test'
docker-image: localhost:5000/rgl: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: '
source /opt/ros/humble/setup.bash &&
source /rgldep/radar_msgs/install/setup.bash &&
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 && mkdir test-dev && cd test-dev &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so ../test/taped_test/RobotecGPULidar_taped_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/rgl: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 && mkdir test-prod && cd test-prod &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so . &&
./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 && mkdir test-prod && cd test-prod &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so ../test/taped_test/RobotecGPULidar_taped_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: '
cd bin-ros2 && mkdir test-prod && cd test-prod &&
cp -r ../test/RobotecGPULidar_test ../libRobotecGPULidar.so ../ros2_standalone/*.so* . &&
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 && mkdir test-prod && cd test-prod &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so . &&
./RobotecGPULidar_test'
docker-image: nvidia/cuda:11.7.1-base-ubuntu22.04
test-snow-prod:
needs: [ build-snow ]
uses: ./.github/workflows/test-subworkflow.yml
with:
test-command: '
cd bin-snow && mkdir test-prod && cd test-prod &&
cp ../test/RobotecGPULidar_test ../libRobotecGPULidar.so . &&
./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 &&
cd bin-all && mkdir test-prod && cd test-prod &&
cp -r ../test/RobotecGPULidar_test ../libRobotecGPULidar.so ../test/taped_test/RobotecGPULidar_taped_test ../ros2_standalone/*.so* . &&
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