Skip to content

Commit

Permalink
add build script issued in ros docker containers.
Browse files Browse the repository at this point in the history
Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
  • Loading branch information
fujitatomoya committed Sep 2, 2023
1 parent 3ea7d04 commit 871f836
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 3 deletions.
10 changes: 7 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ on:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:

# each job goes for each ros supported distribution.
# each job description absorb the distribution dependency as much as possible,
# so that build verification script can be agnostic from distribution dependency.

rolling-build:
runs-on: ubuntu-latest
container:
Expand All @@ -25,7 +29,7 @@ jobs:
- name: Build with ROS rolling
shell: bash
run: |
echo $ROS_DISTRO
./scripts/build-verification.sh
iron-build:
runs-on: ubuntu-latest
Expand All @@ -39,7 +43,7 @@ jobs:
- name: Build with ROS iron
shell: bash
run: |
echo $ROS_DISTRO
./scripts/build-verification.sh
humble-build:
runs-on: ubuntu-latest
Expand All @@ -53,4 +57,4 @@ jobs:
- name: Build with ROS humble
shell: bash
run: |
echo $ROS_DISTRO
./scripts/build-verification.sh
73 changes: 73 additions & 0 deletions scripts/build-verification.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/bin/bash

#####################################################################
# ROS 2 Persistent Parameter Server
#
# This script builds parameter server within ros docker images.
#
# To avoid updating and modifying the files under `.github/workflows`,
# this scripts should be adjusted building process accordingly.
# And `.github/workflows` just calls this script in the workflow pipeline.
# This allows us to maintain the workflow process easier for contributers.
#
#####################################################################

########################
# Function Definitions #
########################

function mark {
export $1=`pwd`;
}

function exit_trap() {
if [ $? != 0 ]; then
echo "Command [$BASH_COMMAND] is failed"
exit 1
fi
}

function install_prerequisites () {
trap exit_trap ERR
echo "[${FUNCNAME[0]}]: update and install dependent packages."
apt update && apt upgrade -y
apt install -y ros-${ROS_DISTRO}-desktop ros-${ROS_DISTRO}-rmw-cyclonedds-cpp --no-install-recommends
cd $there
}

function setup_build_colcon_env () {
trap exit_trap ERR
echo "[${FUNCNAME[0]}]: set up colcon build environement."
mkdir -p ${COLCON_WORKSPACE}/src
cd ${COLCON_WORKSPACE}
cp -rf $there ${COLCON_WORKSPACE}/src
}

function build_parameter_server () {
trap exit_trap ERR
echo "[${FUNCNAME[0]}]: build ROS 2 parameter server."
source /opt/ros/${ROS_DISTRO}/setup.bash
cd ${COLCON_WORKSPACE}
# TODO: test project should be integrated with `colcon test`.
colcon build --symlink-install --packages-select parameter_server ros2_persistent_parameter_server_test
}

########
# Main #
########

export DEBIAN_FRONTEND=noninteractive
export COLCON_WORKSPACE=/tmp/colcon_ws

# mark the working space root directory, so that we can come back anytime with `cd $there`
mark there

# set the trap on error
trap exit_trap ERR

# call install functions in sequence
install_prerequisites
setup_build_colcon_env
build_parameter_server

exit 0

0 comments on commit 871f836

Please sign in to comment.