Dockerfile模板示例
FROM jenkins/jenkins:2.332.4-jdk8
MAINTAINER jason
USER root
RUN sed -i ‘s/deb.debian.org/mirrors.aliyun.com/g’ /etc/apt/sources.list
&& apt update
&& apt install ca-certificates tzdata -y
&& rm -rf /var/cache/apt/*
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& echo “Asia/Shanghai” > /etc/timezone
&& apt install bash curl wget ansible nano -y
&& rm -rf /var/cache/apt/*
USER jenkins
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
ENV JAVA_OPTS=“-Djenkins.install.runSetupWizard=false -Djenkins.CLI.disabled=true”
官方镜像选择
jenkins/jenkins:2.332.4-jdk8
修改Master执行器数量
executors.groovy文件内容示例:
import jenkins.model.*
Jenkins.instance.setNumExecutors(0) ## 分布式构建这里建议设置为0
批量安装插件

plugins.txt文件内容示例:
plugin-util-api:2.17.0
ssh-slaves:1.821.vd834f8a_c390e
ansible:1.1
git-server:1.11
gitlab-plugin:1.5.36
jakarta-activation-api:2.0.1-2
role-strategy:587.588.v850a_20a_30162
commons-text-api:1.10.0-27.vb_fa_3896786a_7
javax-activation-api:1.2.0-5
htmlpublisher:1.31
credentials-binding:523.525.vb_72269281873
authentication-tokens:1.4
configuration-as-code:1569.vb_72405b_80249
structs:324.va_f5d6774f3a_d
kubernetes-credentials:0.10.0
display-url-api:2.3.6
okhttp-api:4.9.3-108.v0feda04578cf
workflow-job:1189.va_d37a_e9e4eda_
ldap:2.11
envinject-api:1.199.v3ce31253ed13
run-condition:1.5
command-launcher:1.2
publish-over:0.22
ws-cleanup:0.43
mina-sshd-api-core:2.9.2-50.va_0e1f42659a_a
pipeline-build-step:488.v8993df156e8d
dtkit-api:3.0.2
code-coverage-api:3.0.5
docker-java-api:3.2.13-37.vf3411c9828b9
pipeline-input-step:466.v6d0a_5df34f81
cloudbees-folder:6.740.ve4f4ffa_dea_54
workflow-durable-task-step:1190.vc93d7d457042
ace-editor:1.1
pipeline-milestone-step:111.v449306f708b_7
conditional-buildstep:1.4.2
scm-api:631.v9143df5b_e4a_a
matrix-project:772.v494f19991984
docker-workflow:563.vd5d2e5c4007f
snakeyaml-api:1.33-90.v80dcb_3814d35
bootstrap5-api:5.2.0-1
mailer:435.438.v5b_81173f5b_a_1
jsch:0.1.55.61.va_e9ee26616e7
timestamper:1.21
plain-credentials:143.v1b_df8b_d3b_e48
localization-zh-cn:1.0.24
token-macro:321.vd7cc1f2a_52c8
groovy:453.vcdb_a_c5c99890
metrics:4.1.6.2
workflow-api:1200.v8005c684b_a_c6
popper2-api:2.11.6-1
branch-api:2.1071.v1a_188a_562481
maven-plugin:3.21
prism-api:1.28.0-2
momentjs:1.1.1
envinject:2.901.v0038b_6471582
forensics-api:1.15.1
config-file-provider:3.10.0
jdk-tool:63.v62d2fd4b_4793
workflow-cps-global-lib:609.vd95673f149b_b
pipeline-stage-view:2.28
docker-plugin:1.3.0
checks-api:1.7.5
workflow-multibranch:716.vc692a_e52371b_
ssh-agent:327.v230ecd01f86f
workflow-cps:2729.2732.vda_e3f07b_5a_f8
kubernetes-client-api:6.4.1-208.vfe09a_9362c2c
parameterized-trigger:2.45
ssh-credentials:277.280.v1e86b_7d0056b_
git:4.12.1
kubernetes:3724.v0920c1e0ec69
permissive-script-security:0.7
jquery3-api:3.6.1-1
script-security:1190.v65867a_a_47126
email-ext:2.92
pipeline-graph-analysis:202.va_d268e64deb_3
jquery:1.12.4-1
workflow-basic-steps:994.vd57e3ca_46d24
durable-task:504.vb10d1ae5ba2f
commons-lang3-api:3.12.0-36.vd97de6465d5b_
workflow-scm-step:408.v7d5b_135a_b_d49
trilead-api:1.67.vc3938a_35172f
antisamy-markup-formatter:159.v25b_c67cd35fb_
build-pipeline-plugin:1.5.8
pipeline-model-api:2.2121.vd87fb_6536d1e
docker-commons:1.21
apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61
font-awesome-api:6.1.2-1
workflow-support:839.v35e2736cfd5c
bouncycastle-api:2.27
workflow-aggregator:596.v8c21c963d92d
nodejs:1.5.1
variant:59.vf075fe829ccb
credentials:1087.1089.v2f1b_9a_b_040e4
jakarta-mail-api:2.0.1-2
caffeine-api:2.9.3-65.v6a_47d0f4d1fe
javax-mail-api:1.6.2-5
mina-sshd-api-common:2.9.2-50.va_0e1f42659a_a
pam-auth:1.10
jaxb:2.3.7-1
pipeline-rest-api:2.28
pipeline-groovy-lib:612.v84da_9c54906d
external-monitor-job:203.v683c09d993b_9
jackson2-api:2.14.2-319.v37853346a_229
pipeline-stage-step:293.v200037eefcd5
pipeline-model-definition:2.2121.vd87fb_6536d1e
pipeline-model-extensions:2.2121.vd87fb_6536d1e
git-client:3.12.4
workflow-step-api:639.v6eca_cd8c04a_a_
emailext-template:1.5
sshd:3.242.va_db_9da_b_26a_c3
thinBackup:1.11
echarts-api:5.3.3-1
javadoc:226.v71211feb_e7e9
sonar:2.14
xunit:3.1.2
workflow-cps-global-lib-http:2.20.0
data-tables-api:1.12.1-3
matrix-auth:3.1.5
junit:1143.1145.v81b_b_9579a_019
publish-over-ssh:1.24
localization-support:1.2
ssh:2.6.1
git-parameter:0.9.18
ant:481.v7b_09e538fcca
dashboard-view:2.466.vdfefd95a_b_f8d
locale:180.v207501dff9b_a_
build-timeout:1.24
resource-disposer:0.20
pipeline-stage-tags-metadata:2.2121.vd87fb_6536d1e
jersey2-api:2.37-1

获取服务器已安装插件列表的方法:

$ export JENKINS_HOST=admin:admin@192.168.100.10:8080
$ curl -sSL “http://$JENKINS_HOST/pluginManager/api/xml?depth=1&xpath=///shortName|///version&wrapper=plugins” | perl -pe ‘s/.?([\w-]+).?([^<]+)()(</\w+>)+/\1 \2\n/g’|sed ‘s/ /😕’ > plugins.txt
常用插件介绍
Parameterized Trigger
参数化构建。

ThinBackup
数据备份和恢复。

Role-based Authorization Strategy
基于角色的权限管理。

Git
Jenkins 安装中默认安装 Git 插件,所以不需要单独安装。利用 git 工具可以从 github、gitlab 等等的地址下载源码。

Docker
Jenkins 安装中默认安装 Docker 插件,所以不需要单独安装。利用 Docker 插件可以设置 Docker 环境,运行 Docker 命令,配置远程 Docker 仓库凭据等。

Kubernetes
Kubernetes 插件的目的是能够使用 Kubernetes 集群动态配置 Jenkins 代理(使用Kubernetes调度机制来优化负载),运行单个构建,等构建完成后删除该代理。这里我们需要用到这个插件来启动 Jenkins Slave 代理镜像,让代理执行 Jenkins 要执行的 Job。

Kubernetes Cli
Kubernetes Cli 插件作用是在执行 Jenkins Job 时候提供 kubectl 与 Kubernetes 集群交互环境。可以在 Pipeline 或自由式项目中允许执行 kubectl 相关命令。它的主要作用是提供 kubectl 运行环境,当然也可以提供 helm 运行环境。

Config File Provider
Config File Provider 插件作用就是提供在 Jenkins 中存储 properties、xml、json、settings.xml 等信息,可以在执行 Pipeline 过程中可以写入存储的配置。例如,存入一个 Maven 全局 Settings.xml 文件,在执行 Pipeline Job 时候引入该 Settings.xml ,这样 Maven 编译用的就是该全局的 Settings.xml。

Pipeline Utility Steps
这是一个操作文件的插件,例如读写 json、yaml、pom.xml、Properties 等等。在这里主要用这个插件读取 pom.xml 文件的参数设置,获取变量,方便构建 Docker 镜像。

Git Parameter
能够与 Git 插件结合使用,动态获取 Git 项目中分支信息,在 Jenkins Job 构建前提供分支选项,来让项目执行人员选择拉取对应分支的代码。

Maven Integration
Maven 插件,用于编译 Maven 项目和安装 Maven 工具到任务中。

SonarQube Scanner
SonarQube 是一种用于连续检查代码质量的开源平台,该插件可轻松与 SonarQube 集成。

Email Extension Template
用于设置邮件模板。

Docker Pipeline
通过管道构建和使用Docker容器。

HTTP Request
这个插件发送一个http请求到一个带有一些参数的url。