Dockerfile模板示例
FROM jenkinsci/blueocean:1.24.8
MAINTAINER Varden
USER root
RUN sed -i ‘s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g‘ /etc/apk/repositories
RUN apk update
RUN apk upgrade
RUN apk add --no-cache ca-certificates tzdata && rm -rf /var/cache/apk/*
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
RUN apk add --no-cache bash curl wget nano && rm -rf /var/cache/apk/*
USER jenkins
COPY executors.groovy /usr/share/jenkins/ref/init.groovy.d/executors.groovy ## 修改Master执行器数量
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" ## 禁用安装向导和CLI
官方镜像选择
建议使用的Docker映像是jenkinsci/blueocean image(来自 Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
jenkinsci/blueocean:1.24.8
修改Master执行器数量
executors.groovy文件内容示例:
import jenkins.model.*
Jenkins.instance.setNumExecutors(0) ## 分布式构建这里建议设置为0
批量安装插件
plugins.txt文件内容示例:
pipeline-stage-tags-metadata:1.9.1
pam-auth:1.6
pipeline-graph-analysis:1.11
workflow-cps:2.93
favorite:2.3.3
handy-uri-templates-2-api:2.1.8-1.0
workflow-api:2.46
jenkins-design-language:1.24.8
blueocean-pipeline-editor:1.24.8
variant:1.4
workflow-scm-step:2.13
sshd:3.0.3
token-macro:266.v44a80cf277fd
okhttp-api:3.14.9
trilead-api:1.0.13
workflow-support:3.8
pipeline-rest-api:2.19
pipeline-build-step:2.15
blueocean-i18n:1.24.8
github-branch-source:2.11.2
pipeline-stage-view:2.19
blueocean:1.24.8
jquery3-api:3.6.0-2
blueocean-pipeline-scm-api:1.24.8
github:1.34.0
localization-zh-cn:1.0.24
blueocean-github-pipeline:1.24.8
blueocean-events:1.24.8
bouncycastle-api:2.20
localization-support:1.1
font-awesome-api:5.15.3-4
workflow-job:2.41
apache-httpcomponents-client-4-api:4.5.13-1.0
pipeline-model-extensions:1.9.1
blueocean-bitbucket-pipeline:1.24.8
blueocean-config:1.24.8
ssh-credentials:1.19
mailer:1.34
matrix-auth:2.6.8
command-launcher:1.2
blueocean-web:1.24.8
ldap:2.7
matrix-project:1.19
blueocean-dashboard:1.24.8
jackson2-api:2.12.4
workflow-basic-steps:2.24
display-url-api:2.3.5
pubsub-light:1.16
pipeline-model-api:1.9.1
jjwt-api:0.11.2-9.c8b45b8bb173
credentials:2.5
snakeyaml-api:1.29.1
htmlpublisher:1.25
credentials-binding:1.27
git-server:1.9
popper2-api:2.9.3-1
handlebars:3.0.8
momentjs:1.1.1
blueocean-core-js:1.24.8
bootstrap4-api:4.6.0-3
branch-api:2.6.5
echarts-api:5.1.2-9
scm-api:2.6.5
caffeine-api:2.9.2-29.v717aac953ff3
resource-disposer:0.16
pipeline-model-definition:1.9.1
jdk-tool:1.0
cloudbees-bitbucket-branch-source:2.9.10
blueocean-git-pipeline:1.24.8
antisamy-markup-formatter:2.1
github-api:1.123
email-ext:2.83
pipeline-milestone-step:1.3.2
build-timeout:1.20
plugin-util-api:2.4.0
popper-api:1.16.1-2
blueocean-autofavorite:1.2.4
sse-gateway:1.24
workflow-cps-global-lib:2.21
checks-api:1.7.2
pipeline-stage-step:2.5
ace-editor:1.1
workflow-multibranch:2.26
durable-task:1.39
pipeline-github-lib:1.0
junit:1.52
gradle:1.37.1
workflow-aggregator:2.6
blueocean-display-url:2.4.1
timestamper:1.13
blueocean-rest-impl:1.24.8
git:4.8.2
blueocean-commons:1.24.8
blueocean-rest:1.24.8
authentication-tokens:1.4
blueocean-pipeline-api-impl:1.24.8
lockable-resources:2.11
cloudbees-folder:6.16
blueocean-personalization:1.24.8
workflow-step-api:2.24
structs:1.23
workflow-durable-task-step:2.39
jsch:0.1.55.2
plain-credentials:1.7
git-client:3.9.0
script-security:1.78
bootstrap5-api:5.1.0-1
ws-cleanup:0.39
ant:1.11
blueocean-jwt:1.24.8
pipeline-input-step:2.12
ssh-slaves:1.32.0
获取服务器已安装插件列表的方法:
$ 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/.*?<shortName>([\w-]+).*?<version>([^<]+)()(<\/\w+>)+/\1 \2\n/g‘|sed ‘s/ /:/‘ > plugins.txt
常用插件介绍
- SCM Sync Configuration
将Jenkens的配置变更同步到SCM中。
- 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
用于设置邮件模板。