最简 jenkins-agent 镜像
阅读原文时间:2021年08月28日阅读:1

jenkins-agent 老版本叫 jenkins-slave,利用K8S集群集成 JENKINS,可以更好的利用系统资源,扩展更方便。如果构建频繁 jenkins-agent iamge 比较大,不仅会影响磁盘I/O也占用网络资源,因此一个优秀的 jenkins-agent image 可以提高工作效率。

使用ALPINE 构建 jenkins-agent 比 使用CENTOS7 构建镜像 缩小了5倍。

如果不想自己构建 jenkins-agent,可以使用我编译好的,镜像仅仅103MB,如下:

docker pull koala2020/jenkins-agent

一、环境说明

1、环境说明

  • agent.jar 【在自己的jenkin里可以下载: http://自己jenkins地址:端口/jnlpJars/agent.jar 每个jenkins版本不同,下载地址也略有不同】
  • jenkins-agent 【可以在这里下载 gitlab
  • settings.xml 【mav 编译依赖加速】
  • helm 【根据自己需求下载helm 二进制包,默认是不启用的】

2、dockerfile 文件以及相关配置

  • dockerfile-jenkins-agent-alpine 文件

镜像基于 alpine3.14 编译,安装了 maven、git、 openssh-client 、openjdk8

注意:在编译代码环节挂载的是宿主机的docker 环境,因此一定要保证 k8s node 的docker环境统一。默认是不启用helm,根据个人需求启用。

cat > dockerfile-jenkins-agent-alpine.yaml <<EOF

FROM koala2020/alpine:3.14
LABEL maintainer Koala2020

RUN sed -i 's#dl-cdn.alpinelinux.org#mirrors.aliyun.com#g' /etc/apk/repositories && \\
    apk update
RUN apk add  --no-cache tzdata git maven openssh-client openjdk8 && \\
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \\
    echo "/Asia/Shanghai" > /etc/timezone && \\
    rm -rf /var/cache/apk/* && \\
    rm -rf /tmp/*

RUN mkdir /lib64 && \\
    ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2

COPY agent.jar  /usr/share/jenkins/agent.jar
COPY jenkins-agent /usr/bin/jenkins-agent
COPY settings.xml /usr/share/java/maven-3/conf/settings.xml
# COPY helm /usr/local/bin/
RUN chmod +x /usr/bin/jenkins-agent

ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/jre
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin

ENTRYPOINT ["jenkins-agent"]

EOF
  • settings.xml 文件需要添加如下

    maven 版本不同,settings.xml 可能会不同,建议自己直接启动一个docker 安装maven copy出来

    http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">


    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    -->

    alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central


  • 编译镜像

    docker build -f dockerfile-jenkins-agent-alpine.yaml -t jenkins-agent:alpine .