mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
Tools: build px4-dev container in CI with ubuntu 24.04
This commit is contained in:
parent
b6daf83088
commit
82ad562be8
45
.github/workflows/dev_container.yml
vendored
Normal file
45
.github/workflows/dev_container.yml
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
name: Container build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
- 'stable'
|
||||||
|
- 'beta'
|
||||||
|
- 'release/**'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build Container
|
||||||
|
runs-on: [runs-on,runner=8cpu-linux-x64,"image=ubuntu24-full-x64","run-id=${{ github.run_id }}"]
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-tags: true
|
||||||
|
submodules: false
|
||||||
|
|
||||||
|
- name: Build and load container image
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: Tools/setup
|
||||||
|
tags: px4-dev:latest
|
||||||
|
platforms: |
|
||||||
|
linux/amd64
|
||||||
|
load: true
|
||||||
|
push: false
|
||||||
|
|
||||||
|
- name: make quick_check
|
||||||
|
uses: addnab/docker-run-action@v3
|
||||||
|
with:
|
||||||
|
image: px4-dev:latest
|
||||||
|
options: -v ${{ github.workspace }}:/workspace
|
||||||
|
run: |
|
||||||
|
cd /workspace
|
||||||
|
git config --global --add safe.directory /workspace
|
||||||
|
make px4_sitl_default
|
||||||
|
make px4_fmu-v6x_default
|
||||||
31
Tools/setup/Dockerfile
Normal file
31
Tools/setup/Dockerfile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# PX4 base development environment
|
||||||
|
FROM ubuntu:24.04
|
||||||
|
LABEL maintainer="Daniel Agar <daniel@agar.ca>, Ramon Roche <mrpollo@gmail.com>"
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
ENV LANG=C.UTF-8
|
||||||
|
ENV LC_ALL=C.UTF-8
|
||||||
|
ENV DISPLAY=:99
|
||||||
|
ENV TERM=xterm
|
||||||
|
ENV TZ=UTC
|
||||||
|
|
||||||
|
# SITL UDP PORTS
|
||||||
|
EXPOSE 14556/udp
|
||||||
|
EXPOSE 14557/udp
|
||||||
|
|
||||||
|
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||||
|
|
||||||
|
# Install PX4 Requirements
|
||||||
|
COPY requirements.txt /tmp/requirements.txt
|
||||||
|
COPY ubuntu.sh /tmp/ubuntu.sh
|
||||||
|
RUN touch /.dockerenv
|
||||||
|
RUN bash /tmp/ubuntu.sh
|
||||||
|
|
||||||
|
RUN git config --global --add safe.directory '*'
|
||||||
|
|
||||||
|
# create user with id 1001 (jenkins docker workflow default)
|
||||||
|
RUN useradd --shell /bin/bash -u 1001 -c "" -m user && usermod -a -G dialout user
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||||
|
|
||||||
|
CMD ["/bin/bash"]
|
||||||
33
Tools/setup/docker-entrypoint.sh
Executable file
33
Tools/setup/docker-entrypoint.sh
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "[docker-entrypoint.sh] Starting entrypoint"
|
||||||
|
# Start virtual X server in the background
|
||||||
|
# - DISPLAY default is :99, set in dockerfile
|
||||||
|
# - Users can override with `-e DISPLAY=` in `docker run` command to avoid
|
||||||
|
# running Xvfb and attach their screen
|
||||||
|
if [[ -x "$(command -v Xvfb)" && "$DISPLAY" == ":99" ]]; then
|
||||||
|
echo "[docker-entrypoint.sh] Starting Xvfb"
|
||||||
|
Xvfb :99 -screen 0 1600x1200x24+32 &
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the ROS_DISTRO is passed and use it
|
||||||
|
# to source the ROS environment
|
||||||
|
if [ -n "${ROS_DISTRO}" ]; then
|
||||||
|
echo "[docker-entrypoint.sh] ROS: ${ROS_DISTRO}"
|
||||||
|
source "/opt/ros/$ROS_DISTRO/setup.bash"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[docker-entrypoint.sh] Working Directory: ${pwd}"
|
||||||
|
|
||||||
|
# Use the LOCAL_USER_ID if passed in at runtime
|
||||||
|
if [ -n "${LOCAL_USER_ID}" ]; then
|
||||||
|
echo "[docker-entrypoint.sh] Starting with: $LOCAL_USER_ID:user"
|
||||||
|
# modify existing user's id
|
||||||
|
usermod -u $LOCAL_USER_ID user
|
||||||
|
|
||||||
|
# run as user
|
||||||
|
# exec gosu user "$@"
|
||||||
|
exec "$@"
|
||||||
|
else
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
@ -229,8 +229,3 @@ if [[ $INSTALL_SIM == "true" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $INSTALL_NUTTX == "true" ]]; then
|
|
||||||
echo
|
|
||||||
echo "Relogin or reboot computer before attempting to build NuttX targets"
|
|
||||||
fi
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user