forked from ros2-java/ros2_java
-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (128 loc) · 5.29 KB
/
build_and_test.yml
File metadata and controls
134 lines (128 loc) · 5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
types: [opened, reopened, synchronize]
jobs:
build_and_test:
runs-on: ubuntu-20.04
steps:
- name: Install Java
run: |
sudo apt-get update -qq
sudo apt-get install -y default-jdk gradle
- uses: actions/checkout@v2
- uses: ros-tooling/setup-ros@v0.2
with:
required-ros-distributions: galactic
- uses: ros-tooling/action-ros-ci@v0.2
with:
package-name: rosidl_generator_java rcljava_common rcljava
target-ros2-distro: galactic
vcs-repo-file-url: ${{ github.workspace }}/ros2_java_desktop.repos
build_android:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
- colcon_meta: |
{
"names": {
"rcl": {
"cmake-args": [ "-DBUILD_TESTING=OFF" ]
},
"rcl_yaml_param_parser": {
"cmake-args": [ "-DBUILD_TESTING=OFF" ]
},
"rclcpp": {
"cmake-args": [ "-DBUILD_TESTING=OFF" ]
},
"rclcpp_action": {
"cmake-args": [ "-DBUILD_TESTING=OFF" ]
},
"rclcpp_lifecycle": {
"cmake-args": [ "-DBUILD_TESTING=OFF" ]
},
"rcutils": {
"cmake-args": [ "-DBUILD_TESTING=OFF" ]
},
"rosidl_typesupport_c": {
"cmake-args": [ "-DBUILD_TESTING=OFF" ]
},
}
}
steps:
- name: Install Java
run: |
sudo apt-get update -qq
sudo apt-get install -y default-jdk gradle
- uses: actions/checkout@v2
- name: Setup locale for ROS 2
run: |
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
- name: Setup sources for ROS 2
run: |
sudo apt-get update && sudo apt-get install -y curl gnupg2 lsb-release
curl -sL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
- name: Install ROS 2 dependencies
run: |
sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser python3-dev
- name: Install colcon extensions for Gradle
run: |
sudo pip3 install git+https://github.com/colcon/colcon-gradle.git
sudo pip3 install git+https://github.com/colcon/colcon-ros-gradle.git
- name: Install Android NDK
run: |
curl -LO https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip
unzip android-ndk-r21d-linux-x86_64.zip
- name: Install QEMU emulation binaries
run: |
sudo apt-get update && sudo apt-get install -y qemu-user
- name: Setup workspace with VCS repo file
run: |
mkdir -p ros2_java_ws/src
cd ros2_java_ws
curl -sL file://${{ github.workspace }}/ros2_java_android.repos | vcs import src
# Use checked out version of ros2_java
rm -rf src/ros2-java/ros2_java
ln --symbolic ${{ github.workspace }} src/ros2-java
- name: Create colcon defaults file
run: printf "${{matrix.colcon_meta}}" > ${{ github.workspace }}/colcon.meta
- name: Build ros2_java for Android
run: |
export PYTHON3_EXEC="$( which python3 )"
export PYTHON3_LIBRARY="$( ${PYTHON3_EXEC} -c 'import os.path; from distutils import sysconfig; print(os.path.realpath(os.path.join(sysconfig.get_config_var("LIBPL"), sysconfig.get_config_var("LDLIBRARY"))))' )"
export PYTHON3_INCLUDE_DIR="$( ${PYTHON3_EXEC} -c 'from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))' )"
export ANDROID_ABI=armeabi-v7a
export ANDROID_NATIVE_API_LEVEL=android-21
export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang
export ANDROID_NDK=${PWD}/android-ndk-r21d
cd ros2_java_ws
colcon build \
--packages-ignore cyclonedds rcl_logging_spdlog rcl_logging_log4cxx rosidl_generator_py \
--packages-up-to rcljava \
--metas ${{ github.workspace }}/colcon.meta \
--cmake-args \
-DRCL_LOGGING_IMPLEMENTATION=rcl_logging_noop \
-DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \
-DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \
-DPYTHON_INCLUDE_DIR=${PYTHON3_INCLUDE_DIR} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_FUNCTION_LEVEL_LINKING=OFF \
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \
-DANDROID_STL=c++_shared \
-DANDROID_ABI=${ANDROID_ABI} \
-DANDROID_NDK=${ANDROID_NDK} \
-DANDROID=ON \
-DTHIRDPARTY_android-ifaddrs=FORCE \
-DTHIRDPARTY=ON \
-DCOMPILE_EXAMPLES=OFF \
-DCMAKE_FIND_ROOT_PATH="${PWD}/install" \
-DCMAKE_CROSSCOMPILING_EMULATOR="/usr/bin/qemu-arm"