Skip to content

Commit 821f70d

Browse files
author
abarbie
committed
integration tests working on runner
1 parent e62c4d5 commit 821f70d

18 files changed

+406
-124
lines changed

.github/workflows/build-arm32v7.yml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: PiCar-X Main Build
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build:
7+
runs-on: [self-hosted, Linux, ARM32]
8+
9+
steps:
10+
- uses: actions/checkout@v2
11+
12+
- name: Build with Docker Compose
13+
working-directory: ./PiCar-X
14+
run: |
15+
TAG=latest-arm32v7 ARCH=arm32v7 docker compose -f docker-compose-core.yml build --no-cache
16+
TAG=latest-arm32v7 docker compose -f docker-compose-dtp.yml build --no-cache
17+
18+
- name: Run pytest in Docker container
19+
run: |
20+
docker run --rm -name picarx-unittest abarbie/picarx:latest-arm32v7 pytest ./src/core/picarx/tests
21+
22+
- name: Start roslaunch in Docker container
23+
run: |
24+
docker run --rm --name dcmotor-integration-test -v /sys/class/gpio:/sys/class/gpio -v /dev/i2c-11:/dev/i2c-11 --privileged abarbie/picarx-dcmotor-driver:1.0.0-arm32v7 rostest picarx_dcmotor_driver integration_tests.test i2c_port:=/dev/i2c-11
25+
26+
- name: Push to Docker Hub
27+
working-directory: ./PiCar-X
28+
run: |
29+
TAG=latest-arm32v7 docker compose -f docker-compose-dtp.yml push

.github/workflows/build-arm64v8.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ jobs:
1515
TAG=latest-arm64v8 ARCH=arm64v8 docker compose -f docker-compose-core.yml build --no-cache
1616
TAG=latest-arm64v8 docker compose -f docker-compose-dtp.yml build --no-cache
1717
18-
# - name: Run pytest in Docker container
19-
# run: |
20-
# docker-compose -f docker-compose-core.yml run --rm app pytest
18+
- name: Run pytest in Docker container
19+
run: |
20+
docker run --rm -name picarx-unittest abarbie/picarx:latest-arm64v8 pytest ./src/core/picarx/tests
2121
22-
# - name: Start roslaunch in Docker container
23-
# run: |
24-
# docker-compose -f docker-compose-core.yml run --rm app roslaunch
22+
- name: Start roslaunch in Docker container
23+
run: |
24+
docker run --rm --name dcmotor-integration-test -v /sys/class/gpio:/sys/class/gpio -v /dev/i2c-11:/dev/i2c-11 --privileged abarbie/picarx-dcmotor-driver:1.0.0-arm64v8 rostest picarx_dcmotor_driver integration_tests.test i2c_port:=/dev/i2c-11
2525
2626
- name: Push to Docker Hub
2727
working-directory: ./PiCar-X

PiCar-X/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ RUN apt update -y \
77
&& apt-get install -y python3-pip python3-setuptools python3-catkin-tools wget unzip curl nano \
88
&& apt-get clean \
99
&& update-ca-certificates -f \
10-
&& pip3 install --upgrade pip \
1110
&& pip3 install pytest pytest-cov avro \
1211
&& mkdir -p ./src/arches
1312

@@ -19,6 +18,7 @@ RUN wget -c https://git.geomar.de/open-source/arches/arches_msgs/-/archive/maste
1918
COPY ./core ./src/core
2019
COPY ./ros/picarx_msgs ./src/picarx_msgs
2120
RUN /bin/bash -c "source /opt/ros/noetic/setup.bash && catkin config --isolate-devel --install && catkin build" \
21+
&& pip3 install -e ./src/core/picarx \
2222
&& touch /root/.bashrc \
2323
&& echo "source /opt/ros/noetic/setup.bash" >> /root/.bashrc \
2424
&& echo "source ./install/setup.bash" >> /root/.bashrc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ROS_MASTER_URI=http://external-ros-master:11312
2+
ROS_HOST_PORT=11312
3+
ASSET_NAME=picarx-gazebo

PiCar-X/docker-compose-ds.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ services:
9191
privileged: true
9292
volumes:
9393
- /sys/class/gpio:/sys/class/gpio
94-
- /dev/i2c-0:/dev/i2c-0
94+
- /dev/i2c-11:/dev/i2c-11
9595
- ./core:/root/catkin_ws/src/core
9696
- ./ros/skills/ackermann_drive:/root/catkin_ws/src/skills/ackermann_drive
9797
command: /bin/bash -c "roslaunch picarx_ackermann_drive ackermann_skill.launch"

PiCar-X/docker-compose-dt.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ services:
6767
privileged: true
6868
volumes:
6969
- /sys/class/gpio:/sys/class/gpio
70-
- /dev/i2c-0:/dev/i2c-0
70+
- /dev/i2c-11:/dev/i2c-11
7171
- ./core:/root/catkin_ws/src/core
7272
- ./ros/skills/ackermann_drive:/root/catkin_ws/src/skills/ackermann_drive
7373
command: /bin/bash -c "

PiCar-X/docker-compose-dtp-inttest.yml renamed to PiCar-X/docker-compose-dtp-ext-gazebo.yml

+54-57
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,15 @@
11
services:
2-
picarx-gazebo:
3-
build:
4-
context: Dockerfile
5-
dockerfile: ./simulation
6-
target: tests
7-
args:
8-
- TAG=${TAG:-latest}
9-
image: abarbie/picarx-gazebo:${TAG}
10-
env_file:
11-
- ./core/dtp/env/simulation.env
2+
picarx:
3+
image: abarbie/picarx:${TAG:-latest}
124
environment:
13-
- DISPLAY=host.docker.internal:0.0
14-
- LIBGL_ALWAYS_INDIRECT=0
15-
- ROS_HOSTNAME=picarx-gazebo
5+
- ROS_HOSTNAME=picarx
6+
- ROS_MASTER_URI=http://picarx:11311
7+
- ROS_HOST_PORT=11311
168
tty: true
179
ports:
18-
- 11312:11312
19-
volumes:
20-
- ./core:/root/catkin_ws/src/core
21-
- ./simulation:/root/catkin_ws/src/simulation
22-
command: /bin/bash -c "roslaunch picarx_gazebo picarx-world.launch & roslaunch picarx_control picarx_control.launch & source install/setup.bash ; sleep 30 ; python3 src/simulation/picarx_control/tests/steering_integration_test.py"
10+
- 11311:11311
11+
command: roscore
12+
restart: on-failure
2313
healthcheck:
2414
test: [ "CMD-SHELL", "curl $${ROS_MASTER_URI} || exit 1" ]
2515
interval: 5s
@@ -30,12 +20,13 @@ services:
3020
shadow-dtp:
3121
image: abarbie/picarx:${TAG:-latest}
3222
env_file:
33-
- ./core/dtp/env/simulation.env
23+
- ./core/dtp/env/picarx.env
3424
tty: true
3525
command: /bin/bash -c "roslaunch arches_core digitalshadow_pt.launch"
3626
depends_on:
37-
picarx-dt:
27+
picarx:
3828
condition: service_healthy
29+
restart: on-failure
3930

4031
mqtt-dtp:
4132
image: abarbie/picarx-arches-mqtt-bridge:${TAG}
@@ -46,12 +37,13 @@ services:
4637
- TAG=${TAG:-latest}
4738
- ARCH=${ARCH:-}
4839
env_file:
49-
- ./core/dtp/env/simulation.env
40+
- ./core/dtp/env/picarx.env
5041
tty: true
5142
command: /bin/bash -c "roslaunch arches_mqtt_bridge pt_client.launch host:=mqtt-server"
5243
depends_on:
53-
picarx-dt:
44+
picarx:
5445
condition: service_healthy
46+
restart: on-failure
5547

5648
motor_left-dtp:
5749
build:
@@ -62,56 +54,62 @@ services:
6254
- ARCH=${ARCH:-}
6355
image: abarbie/picarx-dcmotor-driver:${TAG}
6456
env_file:
65-
- ./core/dtp/env/simulation.env
57+
- ./core/dtp/env/picarx.env
6658
tty: true
6759
privileged: true
6860
volumes:
6961
- /sys/class/gpio:/sys/class/gpio
70-
- /dev/i2c-0:/dev/i2c-0
62+
- /dev/gpiochip0:/dev/gpiochip0
63+
- /dev/i2c-11:/dev/i2c-11
7164
- ./core:/root/catkin_ws/src/core
7265
- ./ros/drivers/dcmotor:/root/catkin_ws/src/drivers/dcmotor
73-
command: /bin/bash -c "roslaunch picarx_dcmotor_driver dcmotor_left.launch"
66+
command: /bin/bash -c "roslaunch picarx_dcmotor_driver dcmotor_left.launch motor1_i2c_port:=/dev/i2c-11"
7467
depends_on:
75-
picarx-dt:
68+
picarx:
7669
condition: service_healthy
70+
restart: on-failure
7771

7872
motor_right-dtp:
7973
image: abarbie/picarx-dcmotor-driver:${TAG}
8074
tty: true
8175
env_file:
82-
- ./core/dtp/env/simulation.env
76+
- ./core/dtp/env/picarx.env
8377
privileged: true
8478
volumes:
8579
- /sys/class/gpio:/sys/class/gpio
86-
- /dev/i2c-0:/dev/i2c-0
80+
- /dev/gpiochip0:/dev/gpiochip0
81+
- /dev/i2c-11:/dev/i2c-11
8782
- ./core:/root/catkin_ws/src/core
8883
- ./ros/drivers/dcmotor:/root/catkin_ws/src/drivers/dcmotor
89-
command: /bin/bash -c "roslaunch picarx_dcmotor_driver dcmotor_right.launch"
84+
command: /bin/bash -c "roslaunch picarx_dcmotor_driver dcmotor_right.launch motor2_i2c_port:=/dev/i2c-11"
9085
depends_on:
91-
picarx-dt:
86+
picarx:
9287
condition: service_healthy
88+
restart: on-failure
9389

9490
steering-dtp:
95-
image: abarbie/picarx-clutchgear-emulator:${TAG}
91+
image: abarbie/picarx-clutchgear-driver:${TAG}
9692
build:
9793
dockerfile: Dockerfile
9894
context: ./ros/drivers/clutchgear
9995
args:
10096
- TAG=${TAG:-latest}
10197
- ARCH=${ARCH:-}
10298
env_file:
103-
- ./core/dtp/env/simulation.env
99+
- ./core/dtp/env/picarx.env
104100
tty: true
105101
privileged: true
106102
volumes:
107103
- /sys/class/gpio:/sys/class/gpio
108-
- /dev/i2c-0:/dev/i2c-0
104+
- /dev/gpiochip0:/dev/gpiochip0
105+
- /dev/i2c-11:/dev/i2c-11
109106
- ./core:/root/catkin_ws/src/core
110107
- ./ros/drivers/clutchgear:/root/catkin_ws/src/drivers/clutchgear
111-
command: /bin/bash -c "roslaunch picarx_clutchgear_driver ackermann_clutchgear_driver.launch"
108+
command: /bin/bash -c "roslaunch picarx_clutchgear_driver ackermann_clutchgear_driver.launch i2c_port:=/dev/i2c-11"
112109
depends_on:
113-
picarx-dt:
110+
picarx:
114111
condition: service_healthy
112+
restart: on-failure
115113

116114
ackermann_skill-dtp:
117115
image: abarbie/picarx-ackermann-skill:${TAG}
@@ -122,18 +120,20 @@ services:
122120
- TAG=${TAG:-latest}
123121
- ARCH=${ARCH:-}
124122
env_file:
125-
- ./core/dtp/env/simulation.env
123+
- ./core/dtp/env/picarx.env
126124
tty: true
127125
privileged: true
128126
volumes:
129127
- /sys/class/gpio:/sys/class/gpio
130-
- /dev/i2c-0:/dev/i2c-0
128+
- /dev/gpiochip0:/dev/gpiochip0
129+
- /dev/i2c-11:/dev/i2c-11
131130
- ./core:/root/catkin_ws/src/core
132131
- ./ros/skills/ackermann_drive:/root/catkin_ws/src/skills/ackermann_drive
133132
command: /bin/bash -c "roslaunch picarx_ackermann_drive ackermann_skill.launch"
134133
depends_on:
135-
picarx-dt:
134+
picarx:
136135
condition: service_healthy
136+
restart: on-failure
137137

138138
motor_emulator_left-dtp:
139139
image: abarbie/picarx-dcmotor-emulator:${TAG}
@@ -144,56 +144,53 @@ services:
144144
- TAG=${TAG:-latest}
145145
- ARCH=${ARCH:-}
146146
env_file:
147-
- ./core/dtp/env/simulation.env
147+
- ./core/dtp/env/simulation-external.env
148148
tty: true
149149
privileged: true
150150
volumes:
151151
- /sys/class/gpio:/sys/class/gpio
152-
- /dev/i2c-0:/dev/i2c-0
152+
- /dev/gpiochip0:/dev/gpiochip0
153+
- /dev/i2c-11:/dev/i2c-11
153154
- ./core:/root/catkin_ws/src/core
154155
- ./ros/emulators/dcmotor:/root/catkin_ws/src/emulators/dcmotor
155-
command: /bin/bash -c "roslaunch picarx_dcmotor_emulator dcmotor_emulator_left.launch"
156-
depends_on:
157-
picarx-dt:
158-
condition: service_healthy
156+
command: /bin/bash -c "roslaunch picarx_dcmotor_emulator dcmotor_emulator_left.launch i2c_port:=/dev/i2c-11"
157+
restart: on-failure
159158

160159
motor_emulator_right-dtp:
161160
image: abarbie/picarx-dcmotor-emulator:${TAG}
162161
env_file:
163-
- ./core/dtp/env/simulation.env
162+
- ./core/dtp/env/simulation-external.env
164163
tty: true
165164
privileged: true
166165
volumes:
167166
- /sys/class/gpio:/sys/class/gpio
168-
- /dev/i2c-0:/dev/i2c-0
167+
- /dev/gpiochip0:/dev/gpiochip0
168+
- /dev/i2c-11:/dev/i2c-11
169169
- ./core:/root/catkin_ws/src/core
170170
- ./ros/emulators/dcmotor:/root/catkin_ws/src/emulators/dcmotor
171-
command: /bin/bash -c "roslaunch picarx_dcmotor_emulator dcmotor_emulator_right.launch"
172-
depends_on:
173-
picarx-dt:
174-
condition: service_healthy
171+
command: /bin/bash -c "roslaunch picarx_dcmotor_emulator dcmotor_emulator_right.launch i2c_port:=/dev/i2c-11"
172+
restart: on-failure
175173

176174
steering_emulator-dtp:
177-
image: abarbie/picarx/emulators/clutchgear:${TAG}
175+
image: abarbie/picarx-clutchgear-emulator:${TAG}
178176
build:
179177
dockerfile: Dockerfile
180178
context: ./ros/emulators/clutchgear
181179
args:
182180
- TAG=${TAG:-latest}
183181
- ARCH=${ARCH:-}
184182
env_file:
185-
- ./core/dtp/env/simulation.env
183+
- ./core/dtp/env/simulation-external.env
186184
tty: true
187185
privileged: true
188186
volumes:
189187
- /sys/class/gpio:/sys/class/gpio
190-
- /dev/i2c-0:/dev/i2c-0
188+
- /dev/gpiochip0:/dev/gpiochip0
189+
- /dev/i2c-11:/dev/i2c-11
191190
- ./core:/root/catkin_ws/src/core
192191
- ./ros/emulators/clutchgear:/root/catkin_ws/src/emulators/clutchgear
193-
command: /bin/bash -c "roslaunch picarx_clutchgear_emulator ackermann_clutchgear_emulator.launch"
194-
depends_on:
195-
picarx-dt:
196-
condition: service_healthy
192+
command: /bin/bash -c "roslaunch picarx_clutchgear_emulator ackermann_clutchgear_emulator.launch i2c_port:=/dev/i2c-11"
193+
restart: on-failure
197194

198195
networks:
199196
picarx:

0 commit comments

Comments
 (0)