跳到主要内容

customize

Jenkins定制化容器

由于每次新部署Jenkins环境,均需要安装很多必要的插件,因此考虑把插件提前做到镜像中

Dockerfile

FROM jenkins/jenkins:2.375.1-lts-jdk11
LABEL maintainer="inspur_lyx@hotmail.com"

ENV JENKINS_UC https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates
ENV JENKINS_UC_DOWNLOAD https://mirrors.tuna.tsinghua.edu.cn/jenkins
ENV JENKINS_OPTS="-Dhudson.model.UpdateCenter.updateCenterUrl=https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json"
ENV JENKINS_OPTS="-Djenkins.install.runSetupWizard=false"

## 用最新的插件列表文件替换默认插件文件
COPY plugins.txt /usr/share/jenkins/ref/

## 执行插件安装
RUN jenkins-plugin-cli -f /usr/share/jenkins/ref/plugins.txt

plugins.txt

ace-editor:1.1
allure-jenkins-plugin:2.28.1
ant:1.10
antisamy-markup-formatter:1.6
apache-httpcomponents-client-4-api:4.5.10-1.0
authentication-tokens:1.3
...

get_plugin.sh

> admin:admin!@jenkins.luffy.com需要替换成Jenkins的用户名、密码及访问地址

#!/usr/bin/env bash
curl -sSL "http://admin:admin!@jenkins.luffy.com/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^\<]+)()(\\<\/\w+\\>)+/\1:\2\n/g'|sed 's/ /:/' \> plugins.txt
## 执行构建,定制jenkins容器
$ docker build . -t 172.21.65.226:5000/jenkins:2.375.1-lts-jdk11-rc1 -f Dockerfile
Sending build context to Docker daemon 6.656kB
Step 1/8 : FROM jenkins/jenkins:2.375.1-lts-jdk11
---\> edcfca03195b
Step 2/8 : LABEL maintainer="inspur_lyx@hotmail.com"
---\> Using cache
---\> 65be4f18593e
Step 3/8 : ENV JENKINS_UC https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates
---\> Running in 0493f99c152e
Removing intermediate container 0493f99c152e
---\> e4d273c52e28
Step 4/8 : ENV JENKINS_UC_DOWNLOAD https://mirrors.tuna.tsinghua.edu.cn/jenkins
---\> Running in 8d1a2a75cec6
Removing intermediate container 8d1a2a75cec6
---\> 59d467e412ee
Step 5/8 : ENV JENKINS_OPTS="-Dhudson.model.UpdateCenter.updateCenterUrl=https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json"
---\> Running in 7bfdeff36ae6
Removing intermediate container 7bfdeff36ae6
---\> 06597366dda4
Step 6/8 : ENV JENKINS_OPTS="-Djenkins.install.runSetupWizard=false"
---\> Running in 426971aa22dd
Removing intermediate container 426971aa22dd
---\> 633af82fdf85
Step 7/8 : COPY plugins.txt /usr/share/jenkins/ref/
---\> 7bddf144c672
Step 8/8 : RUN jenkins-plugin-cli -f /usr/share/jenkins/ref/plugins.txt
---\> Running in 7d0cef5a1ea2
Done
Removing intermediate container 7d0cef5a1ea2
---\> c6de060e4028
Successfully built c6de060e4028
Successfully tagged 172.21.65.226:5000/jenkins:2.375.1-lts-jdk11-rc1

至此,我们可以使用定制化的镜像启动jenkins服务

本章小结

自由风格项目弊端:

  • 任务的完成需要在Jenkins端维护大量的配置
  • 没法做版本控制
  • 可读性、可移植性很差,不够优雅