Skip to content

Commit

Permalink
Tools: build px4-dev container in CI with ubuntu 24.04
Browse files Browse the repository at this point in the history
  • Loading branch information
mrpollo authored Nov 15, 2024
1 parent b6daf83 commit 82ad562
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 5 deletions.
45 changes: 45 additions & 0 deletions .github/workflows/dev_container.yml
Original file line number Diff line number Diff line change
@@ -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 changes: 31 additions & 0 deletions Tools/setup/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# PX4 base development environment
FROM ubuntu:24.04
LABEL maintainer="Daniel Agar <[email protected]>, Ramon Roche <[email protected]>"

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 changes: 33 additions & 0 deletions Tools/setup/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -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
5 changes: 0 additions & 5 deletions Tools/setup/ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,3 @@ if [[ $INSTALL_SIM == "true" ]]; then
fi

fi

if [[ $INSTALL_NUTTX == "true" ]]; then
echo
echo "Relogin or reboot computer before attempting to build NuttX targets"
fi

0 comments on commit 82ad562

Please sign in to comment.