rusefi-ci/Dockerfile

112 lines
3.1 KiB
Docker

FROM ubuntu:22.04 AS builder
ARG RUNNER_VERSION="2.312.0"
WORKDIR /build
COPY start.sh /opt/start.sh
ADD https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz /build/
ADD https://raw.githubusercontent.com/rusefi/rusefi/master/firmware/provide_gcc.sh /build/
RUN apt-get update &&\
apt-get -y install curl xz-utils &&\
mkdir -p /opt/actions-runner &&\
tar -xf ./actions-runner-linux-x64-${RUNNER_VERSION}.tar.gz -C /opt/actions-runner/ &&\
bash provide_gcc.sh &&\
chmod +x /opt/start.sh
FROM ubuntu:22.04 AS actions-runer
COPY --from=builder /opt /opt
COPY --from=builder /tmp/rusefi-provide_gcc12 /tmp/rusefi-provide_gcc12
ENV JAVA_HOME /usr/lib/jvm/temurin-11-jdk-amd64/
ARG GID=1000
RUN groupadd docker -g $GID &&\
useradd -m -g docker -G sudo docker &&\
apt-get update -y &&\
apt-get install -y wget gpg software-properties-common &&\
wget -O key.gpg https://packages.adoptium.net/artifactory/api/gpg/key/public &&\
gpg --dearmor -o /usr/share/keyrings/adoptium.gpg key.gpg &&\
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" >/etc/apt/sources.list.d/adoptium.list &&\
add-apt-repository --yes ppa:kicad/kicad-7.0-releases &&\
apt-get update -y &&\
DEBIAN_FRONTEND=noninteractive /opt/actions-runner/bin/installdependencies.sh && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
curl \
jq \
build-essential \
git \
gcc \
make \
cmake \
openjdk-8-jdk-headless \
ant \
mtools \
dosfstools \
zip \
xxd \
usbutils \
openocd \
sudo \
ruby-rubygems \
time \
lsb-release \
file \
netbase \
gcc-multilib \
g++-multilib \
g++-mingw-w64 \
gcc-mingw-w64 \
sshpass \
doxygen \
graphviz \
lcov \
valgrind \
python3-pip \
python3-tk \
scour \
librsvg2-bin \
temurin-11-jdk \
uidmap \
supervisor \
iproute2 \
openssh-client \
kicad \
&& apt-get autoremove -y && apt-get clean -y &&\
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers &&\
echo 'APT::Get::Assume-Yes "true";' >/etc/apt/apt.conf.d/90forceyes &&\
chown -R docker /opt &&\
chown -R docker /tmp/rusefi-provide_gcc12 &&\
update-alternatives --set java /usr/lib/jvm/temurin-11-jdk-amd64/bin/java
# Install Docker CLI
RUN curl -fsSL https://get.docker.com -o- | sh && \
rm -rf /var/lib/apt/lists/* && \
apt-get clean
# Install Docker-Compose
RUN curl -L -o /usr/local/bin/docker-compose \
"https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" && \
chmod +x /usr/local/bin/docker-compose
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN chmod 644 /etc/supervisor/conf.d/supervisord.conf
WORKDIR /opt
USER docker
RUN dockerd-rootless-setuptool.sh install
VOLUME /opt/actions-runner
ENTRYPOINT ["./start.sh"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]