[ROS-O] enable ubuntu24.04 test #501
Workflow file for this run
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
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
env: | ||
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | ||
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 | ||
ROS_PARALLEL_TEST_JOBS: "-j8" | ||
# latest catkin_virtualenv with pip==21.0.1 is incompatible with python 2.x | ||
# https://github.com/jsk-ros-pkg/jsk_3rdparty/pull/237 | ||
BEFORE_SCRIPT : "sudo pip install virtualenv==15.1.0 setuptools==44.1.1" | ||
- ROS_DISTRO: kinetic | ||
CONTAINER: ubuntu:16.04 | ||
ROS_PARALLEL_TEST_JOBS: "-j8" | ||
- ROS_DISTRO: melodic | ||
CONTAINER: ubuntu:18.04 | ||
ROS_PARALLEL_TEST_JOBS: "-j8" | ||
- ROS_DISTRO: noetic | ||
CONTAINER: ubuntu:20.04 | ||
ROS_PARALLEL_TEST_JOBS: "-j8" | ||
- ROS_DISTRO: noetic | ||
CONTAINER: ubuntu:20.04 | ||
ROS_PARALLEL_TEST_JOBS: "-j8" | ||
TEST_PKGS: virtual_force_publisher # skip test | ||
CATKIN_TOOLS_BUILD_OPTIONS: "--cmake-args -DCMAKE_CXX_FLAGS=-std=c++11 -- --summarize --no-status" | ||
NOT_TEST_INSTALL: true | ||
BEFORE_SCRIPT : "find $GITHUB_WORKSPACE -iname image_view2 -exec touch {}/CATKIN_IGNORE \\;" | ||
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: Chcekout | ||
uses: actions/[email protected] | ||
- name: Start X server | ||
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: Run jsk_travis | ||
uses: jsk-ros-pkg/jsk_travis@master | ||
with: | ||
ROS_PARALLEL_JOBS : ${{ matrix.ROS_PARALLEL_JOBS }} | ||
CATKIN_PARALLEL_JOBS : ${{ matrix.CATKIN_PARALLEL_JOBS }} | ||
ROS_PARALLEL_TEST_JOBS : ${{ matrix.ROS_PARALLEL_TEST_JOBS }} | ||
CATKIN_PARALLEL_TEST_JOBS : ${{ matrix.CATKIN_PARALLEL_TEST_JOBS }} | ||
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 }} | ||
EXTRA_DEB : ${{ matrix.EXTRA_DEB }} | ||
CATKIN_TOOLS_BUILD_OPTIONS: ${{ matrix.CATKIN_TOOLS_BUILD_OPTIONS }} | ||
ubuntu: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- DISTRO: ubuntu:22.04 | ||
# - DISTRO: ubuntu:22.04 | ||
# CATKIN_OPTIONS: "--ignore-pkg image_view2" | ||
# CMAKE_OPTIONS: "-DCMAKE_CXX_FLAGS=-std=c++11" | ||
- DISTRO: ubuntu:24.04 | ||
container: ${{ matrix.DISTRO }} | ||
steps: | ||
- name: Chcekout Source | ||
uses: actions/[email protected] | ||
- name: Install Buildtools | ||
run: | | ||
set -x | ||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections | ||
apt update -q | ||
## | ||
# 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 install -y -q -qq catkin git curl build-essential libboost-all-dev python3-pip python3-venv python3-rosdep2 | ||
test "${{ matrix.DISTRO }}" = "ubuntu:22.04" && apt install -y -q -qq ros-desktop-dev rosbash | ||
test "${{ matrix.DISTRO }}" = "ubuntu:22.04" && apt install -y -q -qq libself-test-dev libpcl-ros-dev | ||
test "${{ matrix.DISTRO }}" = "ubuntu:22.04" && apt install -y -q -qq ros-core-dev ros-robot-dev | ||
test "${{ matrix.DISTRO }}" = "ubuntu:22.04" && pip install vcstool | ||
test "${{ matrix.DISTRO }}" != "ubuntu:22.04" && apt install -y -q -qq pipx && pipx install vcstool | ||
rosdep update | ||
- name: Setup rosinstall_generator | ||
run: | | ||
set -x | ||
# install rosinstall_geneartor with --depend-type buildtool build, see https://github.com/ros-infrastructure/rosinstall_generator/pull/81 | ||
git clone https://github.com/k-okada/rosinstall_generator -b add_depend_type | ||
cd rosinstall_generator | ||
python3 ./setup.py install | ||
- name: Setup 24.04 Dependencies Workspace | ||
if: "${{ matrix.DISTRO }}" != "ubuntu:22.04" | ||
run: | | ||
set -x | ||
# install dependencies | ||
mkdir -p ~/ws_depend/src/ros-o | ||
cd ~/ws_depend/src/ros-o | ||
git clone https://github.com/ros-o/rosconsole.git | ||
git clone https://github.com/ros-o/gencpp.git | ||
git clone https://github.com/ros-o/ros_comm.git | ||
git clone https://github.com/ros-o/catkin_virtualenv.git | ||
git clone https://github.com/ros-o/perception_pcl.git | ||
export PATH=/github/home/.local/bin:$PATH # for 24.04, vcs installed with pipx | ||
ROS_PACKAGE_PATH=/usr/share:$(pwd)/src rosinstall_generator --rosdistro noetic --deps --exclude RPP --repos message_runtime message_generation | vcs import --shallow | ||
ROS_PACKAGE_PATH=/usr/share:$(pwd)/src rosinstall_generator --rosdistro noetic rosbash | vcs import --shallow | ||
- name: Setup 22.04 Dependencies Workspace | ||
if: "${{ matrix.DISTRO }}" = "ubuntu:22.04" | ||
run: | | ||
set -x | ||
# install dependencies | ||
mkdir -p ~/ws_depend/src/ros-o | ||
cd ~/ws_depend/src/ros-o | ||
rosinstall_generator catkin_virtualenv --rosdistro noetic | vcs import --force | ||
# Run catkin_run_tests_target only when CATKIN_ENABLE_TESTING is enabled #89 (https://github.com/locusrobotics/catkin_virtualenv/pull/89) | ||
curl -s -L -O https://patch-diff.githubusercontent.com/raw/locusrobotics/catkin_virtualenv/pull/89.diff | ||
patch -p1 < 89.diff | ||
- name: Setup Dependencies Workspace | ||
run: | | ||
set -x | ||
# install dependencies | ||
mkdir -p ~/ws_depend/src | ||
cd ~/ws_depend/src | ||
ROS_PACKAGE_PATH=/usr/share rosinstall_generator --rosdistro noetic --from-path $GITHUB_WORKSPACE --deps --deps-only --exclude RPP test_catkin_virtualenv test_catkin_virtualenv_inherited --depend-type buildtool build | tee repos | ||
export PATH=/github/home/.local/bin:$PATH # for 24.04, vcs installed with pipx | ||
vcs import --shallow < repos | ||
# override to use latest development for 22.04 | ||
rosinstall_generator laser_filters laser_assembler map_server --rosdistro noetic --upstream-development | vcs import --force | ||
rosdep install -qq -r -y --from-path . --ignore-src || echo "OK" | ||
cd .. | ||
catkin_make_isolated --cmake-args -DCATKIN_ENABLE_TESTING=OFF | ||
- name: Setup Workspace | ||
run: | | ||
set -x | ||
# hack! | ||
apt install -y -q -qq python-is-python3 | ||
# setup workspace | ||
mkdir -p ~/ws_current/src | ||
cd ~/ws_current/src | ||
ln -sf $GITHUB_WORKSPACE . | ||
rosdep install -qq -r -y --from-path . --ignore-src || echo "OK" | ||
- name: Compile Packages | ||
run: | | ||
set -x | ||
cd ~/ws_current/ | ||
source ~/ws_depend/devel_isolated/setup.bash | ||
catkin_make_isolated ${{ matrix.CATKIN_OPTIONS }} --cmake-args -DCATKIN_ENABLE_TESTING=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON ${{ matrix.CMAKE_OPTIONS }} | ||
shell: bash | ||
# 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/[email protected] | ||
- 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: 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 |