CI(pico-sensor): added dockerfile to build pico-sensor image + created ci pipeline with build jobs

This commit is contained in:
SylvanArnold
2025-05-26 20:03:30 +02:00
parent d8f4b9f918
commit 23f11a3b87
6 changed files with 302 additions and 8 deletions

60
pico-sensor/dockerfile Normal file
View File

@@ -0,0 +1,60 @@
# Dockerfile for CI/CD pipeline (GitLab, GitHub Actions, etc.)
FROM mcr.microsoft.com/devcontainers/cpp:dev-ubuntu24.04
WORKDIR /apps
# Install prerequisites
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git python3 wget unzip \
cmake build-essential ninja-build \
doxygen graphviz \
iputils-ping \
apt-transport-https ca-certificates curl software-properties-common \
libx11-xcb1 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 \
libxcb-render-util0 libxcb-shape0 libxcb-sync1 libxcb-util1 \
libxcb-xfixes0 libxcb-xkb1 libxkbcommon-x11-0 libxkbcommon0 xkb-data \
python3-pip python3.12-venv \
&& rm -rf /var/lib/apt/lists/*
# Install ARM toolchain
RUN wget https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v13.2.1-1.1/xpack-arm-none-eabi-gcc-13.2.1-1.1-linux-x64.tar.gz -O gcc-arm-none-eabi.tar.gz && \
mkdir /opt/gcc-arm-none-eabi-13.2.1-1.1 && \
tar -xvzf gcc-arm-none-eabi.tar.gz -C /opt/gcc-arm-none-eabi-13.2.1-1.1 --strip-components 1 && \
rm gcc-arm-none-eabi.tar.gz && \
ln -s /opt/gcc-arm-none-eabi-13.2.1-1.1/bin/* /usr/local/bin
# Use the ARM gcov for coverage
RUN rm /usr/bin/gcov && \
ln -s /opt/gcc-arm-none-eabi-13.2.1-1.1/bin/arm-none-eabi-gcov /usr/bin/gcov
# Install SEGGER J-Link
RUN curl -d "accept_license_agreement=accepted&submit=Download+software" -X POST -O "https://www.segger.com/downloads/jlink/JLink_Linux_V810g_x86_64.deb" && \
dpkg --unpack JLink_Linux_V810g_x86_64.deb && \
rm -f /var/lib/dpkg/info/jlink.postinst && \
dpkg --configure jlink && \
apt-get install -yf && \
rm JLink_Linux_V810g_x86_64.deb
# Install Pico SDK
RUN git clone https://github.com/raspberrypi/pico-sdk.git --branch master && \
cd pico-sdk && \
git checkout tags/2.0.0 && \
git submodule update --init
ENV PICO_SDK_PATH=/apps/pico-sdk/
# Patch the SDK for semihosting file I/O (needed for gcov)
COPY newlib_interface.c.patched ${PICO_SDK_PATH}/src/rp2_common/pico_clib_interface/newlib_interface.c
# Build picotool
RUN git clone https://github.com/raspberrypi/picotool.git --branch master && \
cd picotool && \
git checkout tags/2.0.0 && \
git submodule update --init && \
mkdir build && cd build && cmake ../ && make -j8 && \
cmake --install .
# Default command (overridden by CI/CD)
CMD ["bash"]