From dda0e6da4cbc6188b57c2bf5a56389d28006bd46 Mon Sep 17 00:00:00 2001 From: Damien Duportal Date: Sat, 12 Nov 2022 18:39:28 +0100 Subject: [PATCH] feat(linux) add `curl` in the image and use Dockerfile's `ADD` directive to download remoting Signed-off-by: Damien Duportal --- 11/alpine/Dockerfile | 13 +++++-------- 11/archlinux/Dockerfile | 10 ++++------ 11/bullseye/Dockerfile | 10 ++++------ 17/alpine/Dockerfile | 10 ++++------ 17/bullseye/Dockerfile | 9 ++++----- tests/tests.bats | 8 +++++++- 6 files changed, 28 insertions(+), 32 deletions(-) diff --git a/11/alpine/Dockerfile b/11/alpine/Dockerfile index ef1630d60..0cba7a380 100644 --- a/11/alpine/Dockerfile +++ b/11/alpine/Dockerfile @@ -23,7 +23,6 @@ ARG JAVA_VERSION=11.0.17_8 FROM eclipse-temurin:"${JAVA_VERSION}"-jdk-alpine -ARG VERSION=3071.v7e9b_0dc08466 ARG user=jenkins ARG group=jenkins ARG uid=1000 @@ -32,21 +31,19 @@ ARG gid=1000 RUN addgroup -g "${gid}" "${group}" \ && adduser -h /home/"${user}" -u "${uid}" -G "${group}" -D "${user}" -ARG AGENT_WORKDIR=/home/"${user}"/agent - ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' ## Always use the latest Alpine packages: no need for versions # hadolint ignore=DL3018 RUN apk add --no-cache curl bash git git-lfs musl-locales openssh-client openssl procps \ - && curl --create-dirs -fsSLo /usr/share/jenkins/agent.jar "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" \ - && chmod 755 /usr/share/jenkins \ - && chmod 644 /usr/share/jenkins/agent.jar \ - && ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar \ - && apk del --purge curl \ && rm -rf /tmp/*.apk /tmp/gcc /tmp/gcc-libs.tar* /tmp/libz /tmp/libz.tar.xz /var/cache/apk/* +ARG VERSION=3071.v7e9b_0dc08466 +ADD --chown="${user}":"${group}" "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" /usr/share/jenkins/agent.jar +RUN ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar + USER "${user}" +ARG AGENT_WORKDIR=/home/"${user}"/agent ENV AGENT_WORKDIR="${AGENT_WORKDIR}" RUN mkdir /home/"${user}"/.jenkins && mkdir -p "${AGENT_WORKDIR}" diff --git a/11/archlinux/Dockerfile b/11/archlinux/Dockerfile index 0e315ac2d..9d9ecd7e8 100644 --- a/11/archlinux/Dockerfile +++ b/11/archlinux/Dockerfile @@ -36,7 +36,6 @@ RUN jlink \ FROM archlinux:base-20221106.0.100148 -ARG VERSION=3071.v7e9b_0dc08466 ARG user=jenkins ARG group=jenkins ARG uid=1000 @@ -47,12 +46,11 @@ RUN groupadd -g "${gid}" "${group}" \ ARG AGENT_WORKDIR=/home/"${user}"/agent -RUN pacman -Syu git git-lfs --noconfirm +RUN pacman -Syu curl git git-lfs --noconfirm -RUN curl --create-dirs -fsSLo /usr/share/jenkins/agent.jar "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" \ - && chmod 755 /usr/share/jenkins \ - && chmod 644 /usr/share/jenkins/agent.jar \ - && ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar +ARG VERSION=3071.v7e9b_0dc08466 +ADD --chown="${user}":"${group}" "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" /usr/share/jenkins/agent.jar +RUN ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar ENV JAVA_HOME=/opt/java/openjdk ENV PATH "${JAVA_HOME}/bin:${PATH}" diff --git a/11/bullseye/Dockerfile b/11/bullseye/Dockerfile index 6cf627ccf..72df894d2 100644 --- a/11/bullseye/Dockerfile +++ b/11/bullseye/Dockerfile @@ -36,7 +36,6 @@ RUN jlink \ FROM debian:bullseye-20221024 -ARG VERSION=3071.v7e9b_0dc08466 ARG user=jenkins ARG group=jenkins ARG uid=1000 @@ -55,13 +54,12 @@ RUN apt-get update \ curl \ ca-certificates \ fontconfig \ - && curl --create-dirs -fsSLo /usr/share/jenkins/agent.jar https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar \ - && chmod 755 /usr/share/jenkins \ - && chmod 644 /usr/share/jenkins/agent.jar \ - && ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar \ - && apt-get remove -y curl \ && rm -rf /var/lib/apt/lists/* +ARG VERSION=3071.v7e9b_0dc08466 +ADD --chown="${user}":"${group}" "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" /usr/share/jenkins/agent.jar +RUN ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar + ENV LANG C.UTF-8 ENV JAVA_HOME=/opt/java/openjdk diff --git a/17/alpine/Dockerfile b/17/alpine/Dockerfile index 962049729..779d6b44b 100644 --- a/17/alpine/Dockerfile +++ b/17/alpine/Dockerfile @@ -22,7 +22,6 @@ ARG JAVA_VERSION=17.0.5_8 FROM eclipse-temurin:"${JAVA_VERSION}"-jdk-alpine -ARG VERSION=3071.v7e9b_0dc08466 ARG user=jenkins ARG group=jenkins ARG uid=1000 @@ -38,13 +37,12 @@ ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' ## Always use the latest Alpine packages: no need for versions # hadolint ignore=DL3018 RUN apk add --no-cache curl bash git git-lfs musl-locales openssh-client openssl procps \ - && curl --create-dirs -fsSLo /usr/share/jenkins/agent.jar "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" \ - && chmod 755 /usr/share/jenkins \ - && chmod 644 /usr/share/jenkins/agent.jar \ - && ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar \ - && apk del --purge curl \ && rm -rf /tmp/*.apk /tmp/gcc /tmp/gcc-libs.tar* /tmp/libz /tmp/libz.tar.xz /var/cache/apk/* +ARG VERSION=3071.v7e9b_0dc08466 +ADD --chown="${user}":"${group}" "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" /usr/share/jenkins/agent.jar +RUN ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar + USER "${user}" ENV AGENT_WORKDIR="${AGENT_WORKDIR}" RUN mkdir /home/"${user}"/.jenkins && mkdir -p "${AGENT_WORKDIR}" diff --git a/17/bullseye/Dockerfile b/17/bullseye/Dockerfile index a4776c670..88ed67c7c 100644 --- a/17/bullseye/Dockerfile +++ b/17/bullseye/Dockerfile @@ -64,13 +64,12 @@ RUN apt-get update \ curl \ ca-certificates \ fontconfig \ - && curl --create-dirs -fsSLo /usr/share/jenkins/agent.jar https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar \ - && chmod 755 /usr/share/jenkins \ - && chmod 644 /usr/share/jenkins/agent.jar \ - && ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar \ - && apt-get remove -y curl \ && rm -rf /var/lib/apt/lists/* +ARG VERSION=3071.v7e9b_0dc08466 +ADD --chown="${user}":"${group}" "https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar" /usr/share/jenkins/agent.jar +RUN ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar + ENV LANG C.UTF-8 ENV JAVA_HOME=/opt/java/openjdk diff --git a/tests/tests.bats b/tests/tests.bats index de4fc7236..b33566572 100755 --- a/tests/tests.bats +++ b/tests/tests.bats @@ -32,7 +32,7 @@ ARCH=${ARCH:-x86_64} assert_equal "${output}" "UTF-8" } -@test "[${SUT_IMAGE}] image has bash and java installed and in the PATH" { +@test "[${SUT_IMAGE}] image has bash, curl and java installed and in the PATH" { local cid cid="$(docker run -d -it -P "${SUT_IMAGE}" /bin/bash)" @@ -42,6 +42,12 @@ ARCH=${ARCH:-x86_64} assert_success run docker exec "${cid}" bash --version assert_success + + run docker exec "${cid}" sh -c "command -v curl" + assert_success + run docker exec "${cid}" sh -c "curl --version" + assert_success + run docker exec "${cid}" sh -c "command -v java" assert_success