Skip to content

Commit

Permalink
support github workflows with rolling distro.
Browse files Browse the repository at this point in the history
Signed-off-by: Tomoya.Fujita <[email protected]>
  • Loading branch information
fujitatomoya committed Dec 18, 2023
1 parent 5905a1d commit f53d123
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 0 deletions.
35 changes: 35 additions & 0 deletions .github/workflows/rolling.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# This is workflow for rolling distribution
name: rolling

# Currently ros2ai supports all distribution with rolling branch, this is intentionally done.
# Unless it becomes necessary, we will keep the rolling branch for every distribution.
# So that we do not have, dependencies, backport, these maintenance extra cost.
on:
push:
branches: [ "rolling" ]
pull_request:
branches: [ "rolling" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# 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.

build:
runs-on: ubuntu-latest
container:
image: ros:rolling
env:
ROS_DISTRO: rolling
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Build with ROS rolling
shell: bash
run: |
./scripts/verification.sh
75 changes: 75 additions & 0 deletions scripts/verification.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/bin/bash

#####################################################################
# ros2ai ROS 2 Next-Generation Command Line Interface
#
# This script builds ros2ai within ros distro 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
# TODO@fujitatomoya: should install openai via package.xml
pip install openai
#apt install -y ros-${ROS_DISTRO}-desktop --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_colcon_package () {
trap exit_trap ERR
echo "[${FUNCNAME[0]}]: build ros2ai package."
source /opt/ros/${ROS_DISTRO}/setup.bash
cd ${COLCON_WORKSPACE}
# TODO@fujitatomoya: extend this with `colcon test`.
colcon build --symlink-install --packages-select ros2ai
}

########
# 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 f53d123

Please sign in to comment.