Skip to content

add ROS-O test

add ROS-O test #310

Workflow file for this run

on:
push:
branches:
- master
pull_request:
env:
DISPLAY: ':0.0'
jobs:
ros:
runs-on: ubuntu-latest
# continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
include:
- ROS_DISTRO: indigo
CONTAINER: jskrobotics/ros-ubuntu:14.04
USE_DEB: true
- ROS_DISTRO: indigo
CONTAINER: jskrobotics/ros-ubuntu:14.04
USE_DEB: false
NOT_TEST_INSTALL : true
INSTALL_SRC : "http://github.com/jsk-ros-pkg/jsk_planning"
TEST_PKGS : "task_compiler"
- ROS_DISTRO: indigo
CONTAINER: jskrobotics/ros-ubuntu:14.04
USE_DEB: false
NOT_TEST_INSTALL : true
INSTALL_SRC : "http://github.com/jsk-ros-pkg/jsk_pr2eus"
TEST_PKGS : "pr2eus pr2eus_moveit"
BEFORE_SCRIPT: "echo 'deb http://packages.osrfoundation.org/gazebo/ubuntu trusty main' | sudo tee /etc/apt/sources.list.d/gazebo-stable.list; wget --no-check-certificate https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -; sudo apt update -y; sudo apt dist-upgrade -y; mkdir -p ~/.gazebo/; git clone --depth=1 https://github.com/osrf/gazebo_models.git ~/.gazebo/models"
- ROS_DISTRO: indigo
CONTAINER: jskrobotics/ros-ubuntu:14.04
USE_DEB: false
NOT_TEST_INSTALL : false
BEFORE_SCRIPT: "wget https://raw.githubusercontent.com/tork-a/jskeus-release/master/patches/CMakeLists.txt -O jskeus/CMakeLists.txt"
- ROS_DISTRO: indigo
CONTAINER: jskrobotics/ros-ubuntu:14.04
USE_DEB: source
NOT_TEST_INSTALL : false
- ROS_DISTRO: kinetic
CONTAINER: ubuntu:16.04
USE_DEB: true
- ROS_DISTRO: kinetic
CONTAINER: ubuntu:16.04
USE_DEB: false
NOT_TEST_INSTALL : true
INSTALL_SRC : "http://github.com/jsk-ros-pkg/jsk_planning"
TEST_PKGS : "task_compiler"
- ROS_DISTRO: kinetic
CONTAINER: ubuntu:16.04
USE_DEB: false
NOT_TEST_INSTALL : true
INSTALL_SRC : "http://github.com/jsk-ros-pkg/jsk_pr2eus"
TEST_PKGS : "pr2eus pr2eus_moveit"
BEFORE_SCRIPT: "echo 'deb http://packages.osrfoundation.org/gazebo/ubuntu xenial main' | sudo tee /etc/apt/sources.list.d/gazebo-stable.list; wget --no-check-certificate https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -; sudo apt update -y"
- ROS_DISTRO: kinetic
CONTAINER: ubuntu:16.04
USE_DEB: false
NOT_TEST_INSTALL : true
- ROS_DISTRO: kinetic
CONTAINER: ubuntu:16.04
USE_DEB: source
NOT_TEST_INSTALL : true
- ROS_DISTRO: melodic
CONTAINER: ubuntu:18.04
USE_DEB: true
- ROS_DISTRO: melodic
CONTAINER: ubuntu:18.04
USE_DEB: false
NOT_TEST_INSTALL : true
- ROS_DISTRO: melodic
CONTAINER: ubuntu:18.04
USE_DEB: source
NOT_TEST_INSTALL : true
- ROS_DISTRO: noetic
CONTAINER: ubuntu:20.04
USE_DEB: true
# - ROS_DISTRO: noetic
# CONTAINER: ubuntu:20.04
# USE_DEB: false
# NOT_TEST_INSTALL : true
# INSTALL_SRC : "http://github.com/jsk-ros-pkg/jsk_planning"
# TEST_PKGS : "task_compiler"
# experimental: true
# - ROS_DISTRO: noetic
# CONTAINER: ubuntu:20.04
# USE_DEB: false
# NOT_TEST_INSTALL : true
# INSTALL_SRC : "http://github.com/jsk-ros-pkg/jsk_pr2eus"
# TEST_PKGS : "pr2eus pr2eus_moveit"
# experimental: true
- ROS_DISTRO: noetic
CONTAINER: ubuntu:20.04
USE_DEB: false
NOT_TEST_INSTALL : true
- ROS_DISTRO: noetic
CONTAINER: ubuntu:20.04
USE_DEB: source
NOT_TEST_INSTALL : true
container:
image: ${{ matrix.CONTAINER }}
volumes:
- /tmp/node20:/__e/node20
steps:
- name: Install latest git ( use sudo for ros-ubuntu )
run: |
(apt-get update && apt-get install -y sudo) || echo "OK"
sudo apt-get update && sudo apt-get install -y software-properties-common && sudo apt-get update && sudo add-apt-repository -y ppa:git-core/ppa && sudo apt-get update && sudo apt-get install -y git
- name: work around permission issue # https://github.com/actions/checkout/issues/760#issuecomment-1097501613
run: |
set -x
export USER=$(whoami)
if [ "${{ matrix.CONTAINER }}" = "jskrobotics/ros-ubuntu:14.04" ]; then
git config --global --add safe.directory $GITHUB_WORKSPACE || echo "OK" # Show 'could not lock config file /github/home/.gitconfig: Permission denied', but it is ok
sudo mkdir -p /__w/
sudo chmod 777 -R /__w/
sudo chown -R $USER $HOME
# sudo mkdir -p /home/runner/work/_temp/_github_workflow/
# sudo chown -R $USER $HOME /home/runner/work/_temp/_github_workflow/
# ls -al /home/runner/work/_temp/_github_workflow/
else
git config --global --add safe.directory $GITHUB_WORKSPACE
fi
- name: Try to replace `node` with an glibc 2.17
shell: bash
run: |
if [ "${{ matrix.CONTAINER }}" = "jskrobotics/ros-ubuntu:14.04" ]; then
export USER=$(whoami)
sudo chmod 777 -R /__e/node20
sudo chown -R $USER /__e/node20
fi
ls -lar /__e/node20 &&
sudo apt-get install -y curl &&
curl -Lo /tmp/node.tar.gz https://unofficial-builds.nodejs.org/download/release/v20.17.0/node-v20.17.0-linux-x64-glibc-217.tar.gz &&
cd /__e/node20 &&
tar -x --strip-components=1 -f /tmp/node.tar.gz &&
ls -lar /__e/node20/bin/
- name: Checkout
uses: actions/checkout@v3.0.2
- name: Start X server
if: ${{ matrix.ROS_DISTRO == 'kinetic' && matrix.TEST_PKGS == 'pr2eus pr2eus_moveit' }}
run: |
if [[ "${{ matrix.CONTAINER }}" =~ "jskrobotics/ros-ubuntu:14.04" ]]; then exit 0; fi
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections || echo "failing on ros-ubuntu is OK" # set non interactive tzdata https://stackoverflow.com/questions/8671308/non-interactive-method-for-dpkg-reconfigure-tzdata
sudo apt-get -y -qq install mesa-utils x11-xserver-utils xserver-xorg-video-dummy wget
export DISPLAY=:0
wget https://raw.githubusercontent.com/jsk-ros-pkg/jsk_travis/master/dummy.xorg.conf -O /tmp/dummy.xorg.conf
sudo Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile /tmp/xorg.log -config /tmp/dummy.xorg.conf $DISPLAY &
sleep 3 # wait x server up
export QT_X11_NO_MITSHM=1 # http://wiki.ros.org/docker/Tutorials/GUI
xhost +local:root
shell: bash
- name: Fix geneus source tree
run: |
sed -i "s@http://github.com/jsk-ros-pkg/geneus@http://github.com/tork-a/geneus-release.git\n version:\ release/indigo/geneus@" .travis.rosinstall
cat .travis.rosinstall
sed -i "s@jsk-ros-pkg/geneus@tork-a/geneus-release@" setup_upstream.sh
sed -i "/^wstool update/a (cd \$WORKSPACE/src/geneus; git checkout release/indigo/geneus)" setup_upstream.sh
cat setup_upstream.sh
if: ${{ matrix.ROS_DISTRO }} == "indigo" && ${{ matrix.USE_DEB }} == "false"
- name: Install src
run: |
export INSTALL_SRC="${{ matrix.INSTALL_SRC }}"
sudo apt-get install -y -qq python-yaml
sudo apt-get install -y -qq python-is-python3 python3-yaml || echo "OK" # for 20.04
rm .travis.rosinstall
for src in $INSTALL_SRC; do name=`basename $src`; python -c "import yaml;print(yaml.dump([{'git':{'uri':'$src','local-name':'$name'}}], default_flow_style=False))" >> .travis.rosinstall; done;
cat .travis.rosinstall
if: "matrix.INSTALL_SRC != ''"
- name: Run jsk_travis
uses: jsk-ros-pkg/jsk_travis@master
with:
ROS_PARALLEL_JOBS : "-j1"
CATKIN_PARALLEL_JOBS : "-p2"
ROS_PARALLEL_TEST_JOBS : "-j1"
CATKIN_PARALLEL_TEST_JOBS : "-p2"
ROS_DISTRO : ${{ matrix.ROS_DISTRO }}
USE_DEB : ${{ matrix.USE_DEB }}
NOT_TEST_INSTALL : ${{ matrix.NOT_TEST_INSTALL }}
TEST_PKGS : ${{ matrix.TEST_PKGS }}
BEFORE_SCRIPT : ${{ matrix.BEFORE_SCRIPT }}
# ROS-O setup https://github.com/v4hn/ros-o-builder/blob/jammy-one/README.md#install-instructions
ros-o:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- DISTRO: ubuntu:22.04
ROS_REPOSITORY_URL: https://raw.githubusercontent.com/v4hn/ros-o-builder/jammy-one/repository
container: ${{ matrix.DISTRO }}
env:
DEBIAN_FRONTEND : noninteractive
steps:
- name: Chcekout Source
uses: actions/checkout@v3.0.2
- name: Setup ROS-O deb repository
run: |
set -x
apt update && apt install -qq -y ca-certificates
echo "deb [trusted=yes] ${{ matrix.ROS_REPOSITORY_URL }}/ ./" | tee /etc/apt/sources.list.d/ros-o-builder.list
##
# https://github.com/v4hn/ros-deb-builder-action/blob/b7c0ed93fde3a86b5b1027bf8f7145cad6067c90/prepare.sh#L27-L28
# Canonical dropped the Debian ROS packages from 24.04 for political reasons. Wow.
test "${{ matrix.DISTRO }}" = "ubuntu:24.04" && apt install -y software-properties-common retry && retry -d 50,10,30,300 -t 12 add-apt-repository -y ppa:v-launchpad-jochen-sprickerhof-de/ros
##
apt update
apt install -qq -y python3-rosdep2
echo "yaml ${{ matrix.ROS_REPOSITORY_URL }}/local.yaml debian" | tee /etc/ros/rosdep/sources.list.d/1-ros-o-builder.list
rosdep update
- name: Setup catkin-tools
run: |
set -x
# setup catkin tools
apt install -qq -y python3-pip
pip3 install catkin-tools
# setup build tools
apt install -qq -y cmake build-essential catkin ros-one-rosbash
- name: override rosdep rule to use system euslisp
run: |
set -x
apt install -qq -y curl
curl -L https://github.com/mikefarah/yq/releases/download/v4.33.3/yq_linux_amd64 -o /usr/local/bin/yq
chmod a+x /usr/local/bin/yq
yq eval -n '.euslisp.ubuntu = "euslisp-dev" | .jskeus.ubuntu = "jskeus-dev"' | tee rosdep.yaml
echo "yaml file:///$(pwd)/rosdep.yaml" | tee /etc/ros/rosdep/sources.list.d/01-local.list
rosdep update
shell: bash
- name: Setup Workspace
run: |
source /opt/ros/one/setup.bash
set -x
# setup workspace
mkdir -p ~/ws/src
cd ~/ws/src
ln -sf $GITHUB_WORKSPACE .
rosdep install -qq -r -y --from-path . --ignore-src || echo "OK"
shell: bash
- name: Compile Packages
run: |
source /opt/ros/one/setup.bash
set -x
cd ~/ws/
catkin build --no-status -sv ${{ matrix.CATKIN_OPTIONS }} --cmake-args -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON ${{ matrix.CMAKE_OPTIONS }}
shell: bash
- name: Test Packages
run: |
source /opt/ros/one/setup.bash
source ~/ws/devel/setup.bash
roscd roseus
set -x
catkin test --no-status -sv roseus
shell: bash