5baaa265创建于 2024年2月22日历史提交
# replace VERSION before run
FROM swr.cn-north-4.myhuaweicloud.com/openeuler/openjdk/OPENJDK:TAG

RUN sed -i "s/repo.openeuler.org/repo.huaweicloud.com\/openeuler/g" /etc/yum.repos.d/openEuler.repo

RUN set -eux; \
    yum install -y cpio bsdtar expect openssh sudo shadow curl wget vim git strace audit-libs-devel augeas autoconf automake bash-completion bison bzip2-devel cargo checkpolicy chrpath cyrus-sasl-devel dbus-devel device-mapper-devel device-mapper-multipath-devel dnsmasq ebtables elfutils-libelf-devel firewalld-filesystem flex gawk gcc gettext gettext-devel glib2 glib2-devel gnutls-devel gtk3-devel iptables iscsi-initiator-utils kernel krb5-devel libacl-devel libaio-devel libattr-devel libblkid-devel libcap-devel libcap-ng-devel libcurl-devel libepoxy-devel libiscsi-devel libjpeg-devel libnl3-devel libpcap-devel libpciaccess-devel libpng-devel librados-devel librbd-devel libseccomp-devel libselinux-devel libssh2-devel libssh-devel libtasn1-devel libtirpc-devel libtool libudev-devel libunwind-devel libusbx-devel libwsman-devel libxml2-devel libxslt lvm2 lzo-devel module-init-tools ncurses-devel netcf-devel nfs-utils ninja-build numactl-devel numad pam-devel parted-devel perl-interpreter perl-podlators perl-Test-Harness pixman-devel polkit python3 python3-devel python3-docutils python3-pip python-sphinx qemu-img radvd rdma-core-devel readline-devel rpcgen rust rust-packaging sanlock-devel scrub selinux-policy-devel snappy-devel systemd systemd-devel systemd-units systemtap-sdt-devel texinfo usbredir-devel util-linux wireshark-devel xfsprogs-devel yajl-devel zlib-devel zstd-devel alsa-lib-devel clang;

# update rust to 1.64.0
RUN set -eux; \
    mkdir -p /usr/src/rust-1.64.0; \
    cd /usr/src/rust-1.64.0; \
    ARCH=$(arch); \
    wget -r -nd --no-parent --no-remove-listing http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP2/everything/${ARCH}/Packages/ -l1 -A rust*.rpm; \
    wget -r -nd --no-parent --no-remove-listing http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP2/everything/${ARCH}/Packages/ -l1 -A cargo-*.rpm; \
    wget -r -nd --no-parent --no-remove-listing http://repo.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP2/everything/${ARCH}/Packages/ -l1 -A clippy-*.rpm; \
    rm rust-gdb-*; \
    rm rust-lldb-*; \
    rm rust-packaging-*; \
    rpm -Uvh *.rpm; \
    rm -rf /usr/src/rust-1.64.0;

RUN set -eux; \
    mkdir -p /usr/src/rust-1.72.0; \
    cd  /usr/src/rust-1.72.0; \
    ARCH=$(arch); \
    wget https://cache-proxy.test.osinfra.cn/download/https://static.rust-lang.org/dist/rust-1.72.0-${ARCH}-unknown-linux-gnu.tar.gz; \
    wget https://cache-proxy.test.osinfra.cn/download/https://static.rust-lang.org/dist/rust-1.72.0-${ARCH}-unknown-linux-musl.tar.gz; \
    tar -xf rust-1.72.0-${ARCH}-unknown-linux-gnu.tar.gz; \
    tar -xf rust-1.72.0-${ARCH}-unknown-linux-musl.tar.gz; \
    cd rust-1.72.0-${ARCH}-unknown-linux-musl; \
    sh install.sh; \
    cd ../rust-1.72.0-${ARCH}-unknown-linux-gnu; \
    sh install.sh; \
    cd /root; \
    rm -rf /usr/src/rust-1.72.0;

ARG VERSION=4.3
ARG user=jenkins
ARG group=jenkins
ARG uid=1000
ARG gid=1000
ARG AGENT_WORKDIR=/home/${user}/agent

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

RUN curl --create-dirs -fsSLo /usr/local/bin/jenkins-agent http://121.36.53.23/AdoptOpenJDK/jenkins-agent
#COPY jenkins-agent /usr/local/bin/jenkins-agent

RUN chmod a+rx /usr/local/openjdk-11 \
     && chmod a+rx /usr/local/bin/jenkins-agent \
     && ln -s /usr/local/bin/jenkins-agent /usr/local/bin/jenkins-slave

RUN groupadd -g ${gid} ${group}
RUN useradd -c "Jenkins user" -d /home/${user} -u ${uid} -g ${gid} -m ${user}
RUN echo "${user} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers


USER ${user}
ENV AGENT_WORKDIR=${AGENT_WORKDIR}
RUN mkdir /home/${user}/.jenkins && mkdir -p ${AGENT_WORKDIR}

VOLUME /home/${user}/.jenkins
VOLUME ${AGENT_WORKDIR}
WORKDIR ${AGENT_WORKDIR}

RUN mkdir -p /home/jenkins/.cargo; \
    echo "[source.crates-io]" > /home/jenkins/.cargo/config; \
    echo "registry = 'https://github.com/rust-lang/crates.io-index'" >> /home/jenkins/.cargo/config; \
    echo "replace-with = 'ustc'" >> /home/jenkins/.cargo/config; \
    echo "[source.ustc]" >> /home/jenkins/.cargo/config; \
    echo "registry = 'http://mirrors.ustc.edu.cn/crates.io-index'" >> /home/jenkins/.cargo/config
RUN cargo install typos-cli --locked --version 1.16.26

ENTRYPOINT ["jenkins-agent"]