Jenkins详细部署文档
愿你有一天,终会遇到这样一个人,陌生的完全不熟悉的人,毫无感情基础,但感觉是可以很好的一起生活的人。于是,疲惫不已的心,终于愿意停靠。
网站说明
https://get.jenkins.io/war-stable/ war包下载地址
https://www.jenkins.io/doc/book/installing/ 部署文档
https://www.jenkins.io/doc/book/installing/docker/ docker部署文档
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates 清华镜像源
https://mirrors.huaweicloud.com/apache/maven/maven-3/ 华为maven镜像地址
关于Jenkins版本的说明
由于Jenkins的版本不同,其自带的
JDK
版本不同,而且,不管是Docker
部署,还是Jenkins
部署,都涉及到这个版本相关的问题,所以,有必要这里说明一下
Long Term Support (LTS) Release Line
Supported Java versions for the LTS release line are:
2.361.1 (September 2022) and newer
Java 11 or Java 17
2.346.1 (June 2022) and newer
Java 8, Java 11, or Java 17
2.164.1 (March 2019) and newer
Java 8 or Java 11
2.60.1 (June 2017) and newer
Java 8
1.625.1 (October 2015) and newer
Java 7
上述这段文字来自于官网对于Jenkins
版本的相关说明
这段文字列出了 Jenkins LTS(长期支持)版本中每个版本所支持的 Java 版本。以下是详细说明:
- 最新的 LTS 版本(2.361.1 及更高) :这些版本支持最新的 Java 版本,即 Java 11 和 Java 17。使用这些版本可以利用最新的 Java 特性和性能改进。
- 中间版本(2.346.1 至 2.361.0) :这些版本兼容多种 Java 版本,支持 Java 8、Java 11 和 Java 17,为用户提供了灵活性,可以根据需求选择不同的 Java 版本。
- 更早的 LTS 版本(2.164.1 至 2.346.0) :这些版本支持 Java 8 和 Java 11。Java 8 是一个长期广泛使用的版本,而 Java 11 是一个 LTS 版本,提供了较新的特性和改进。
- 老版本(2.60.1 至 2.164.0) :这些版本仅支持 Java 8。Java 8 在这些版本中是唯一支持的 Java 版本,确保了稳定性和兼容性。
- 最早的 LTS 版本(1.625.1 至 2.60.0) :这些版本支持 Java 7。Java 7 已经相对较老,但在这些版本发布时仍被广泛使用。
所以,需要部署
Jenkins
的时候,需要先确认自己所部署的项目JDK版本依赖
,以及服务器目前的JDK
版本,高版本的JDK
跑低版本的JDK
尚可,但是反其道而行是万万不可的
容器化部署Jenkins
安装Docker
1、选择要安装的平台
Docker要求CentOS系统的内核版本高于3.10
uname -r #通过 uname -r 命令查看你当前的内核版本
安装文档地址
2、选择要安装的操作系统
3、首先卸载已安装的Docker
使用Root权限登录 Centos。确保yum包更新到最新。
sudo yum update
如果你的操作系统没有安装过Docker , 就不需要执行卸载命令。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
4、建立仓库
安装Docker所需要的一些工具包
sudo yum install -y yum-utils
建立Docker仓库 (映射仓库地址)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、安装Docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io
6、启动Docker
sudo systemctl start docker
7.设置docker镜像仓库
有时候,我们pull
镜像的时候非常慢,所以需要设置一下国内的镜像仓库作为下载源
第一步:新建或编辑daemon.json
vi /etc/docker/daemon.json
第二步:daemon.json中编辑如下
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
第三步:重启docker
systemctl restart docker.service
第四步:执行docker info查看是否修改成功
docker info
以下列举出国内的几个下载地址:
1.网易
http://hub-mirror.c.163.com
2.Docker中国区官方镜像
https://registry.docker-cn.com
3.中国科技大学
https://docker.mirrors.ustc.edu.cn
4.阿里云容器服务
https://cr.console.aliyun.com/
首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址,类似于“https://1234abcd.mirror.aliyuncs.com”
8.安装docker-compose
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载 Docker Compose 的当前稳定版本:
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 v2.2.2。
Docker Compose 存放在 GitHub,不太稳定。 你可以也通过执行下面的命令,高速安装 Docker Compose。
curl -L [https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-](https://link.zhihu.com/?target=https%3A//get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-)`uname -s`-`uname -m` > /usr/local/bin/docker-compose
将可执行权限应用于二进制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
创建软链:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
$ docker-compose version
cker-compose version 1.24.1, build 4667896b
9.docker常用命令
基本命令
-
启动 Docker 服务:
systemctl start docker
-
检查 Docker 版本:
docker --version
镜像操作
-
从 Docker Hub 拉取镜像:
docker pull <image_name>
例如:
docker pull nginx
-
列出本地镜像:
docker images
-
删除本地镜像:
docker rmi <image_name>
-
构建镜像:
docker build -t <image_name> .
容器操作
-
运行容器:
docker run -it --name <container_name> <image_name>
例如:
docker run -it --name my_nginx nginx
-
列出运行中的容器:
docker ps
-
列出所有容器(包括停止的容器) :
docker ps -a
-
停止容器:
docker stop <container_name>
-
启动已停止的容器:
docker start <container_name>
-
删除容器:
docker rm <container_name>
-
进入运行中的容器:
docker exec -it <container_name> /bin/bash
数据卷操作
-
创建数据卷:
docker volume create <volume_name>
-
列出数据卷:
docker volume ls
-
删除数据卷:
docker volume rm <volume_name>
网络操作
-
创建网络:
docker network create <network_name>
-
列出网络:
docker network ls
-
删除网络:
docker network rm <network_name>
其他操作
-
查看容器日志:
docker logs <container_name>
-
检查 Docker 系统资源使用情况:
docker system df
安装Jenkins
1.拉取 Jenkins 镜像
从 Docker Hub 拉取最新的 Jenkins 镜像。
docker pull jenkins/jenkins:lts
2.创建 Docker 卷
在 /usr/local/src/
目录下创建一个用于存储 Jenkins 数据的目录。
mkdir -p /usr/local/src/jenkins/data
3.运行 Jenkins 容器
使用 Docker 启动 Jenkins 容器,并挂载前面创建的目录。
docker run -d --name jenkins \
-v /usr/local/src/jenkins/data:/var/jenkins_home \
-v /usr/local/src/maven:/usr/local/src/maven \
-p 8080:8080 \
-p 50000:50000 \
jenkins/jenkins:lts
在上述命令中:
-d
:表示容器将在后台运行。--name jenkins
:指定容器的名称为jenkins
。-v /usr/local/src/jenkins/data:/var/jenkins_home
:将主机的/usr/local/src/jenkins/data
目录挂载到容器内的 Jenkins 数据目录/var/jenkins_home
。-v /usr/local/src/maven:/usr/local/src/maven
:将主机的/usr/local/src/maven:/usr/local/src/maven
目录挂载到容器内的 Jenkins 。-p 8080:8080
:将容器的 8080 端口映射到主机的 8080 端口。-p 50000:50000
:将容器的 50000 端口映射到主机的 50000 端口,用于 Jenkins 代理通信。
如果启动失败,查看容器日志,
docker logs 容器ID
如果是如下报错
INSTALL WARNING: User: missing rw permissions on JENKINS_HOME: /var/jenkins_home
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
那就给容器挂载目录授权
sudo chown -R 1000:1000 /usr/local/src/jenkins
sudo chown -R 1000:1000 /usr/local/src/jenkins/*
4.验证部署
打开浏览器并访问 http://<你的主机IP>:8080
,在首次启动时,Jenkins 将生成一个初始管理员密码。可以通过以下命令查看初始密码:
docker logs 容器ID
或者直接查看文件中的密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
初始化配置完成后,可以使用 Jenkins Web 界面创建新的用户、配置插件和管理 Jenkins 实例。
5.其他常用 Docker 命令
-
查看容器日志:
docker logs -f jenkins
-
进入容器内部:
docker exec -it jenkins /bin/bash
6.配置Jenkins环境
Maven环境配置
JDK环境配置
使用War包部署Jenkins
查看本地JDK
环境
java -version
使用War
包启动Jenkins
由于本地使用的是jdk8
,所以我这里就下载2.246.1
版本的jenkins
然后放到指定位置,执行如下命令
export JENKINS_HOME=/home/jenkins/jenkins_home
java -jar jenkins_8.war (改命令待优化)
在命令行中使用 export JENKINS_HOME=/home/jenkins/jenkins_home
和 java -jar jenkins_8.war
两条命令,为什么呢?
-
export JENKINS_HOME=/home/jenkins/jenkins_home
:- 这条命令设置了一个环境变量
JENKINS_HOME
,将其值指定为/home/jenkins/jenkins_home
。 JENKINS_HOME
环境变量用于指定 Jenkins 的主目录位置,所有的 Jenkins 配置文件、工作目录以及插件等都存储在这个目录中。
- 这条命令设置了一个环境变量
-
java -jar jenkins_8.war
:- 这条命令启动 Jenkins 应用。
-jar
参数告诉 Java 运行时执行一个 JAR 文件(在这种情况下是jenkins_8.war
,一个 WAR 文件实际上也是一个 JAR 文件)。 - 这个命令启动 Jenkins,并根据配置文件和插件信息开始运行。
- 这条命令启动 Jenkins 应用。
组合使用的效果
将这两条命令组合在一起:
export JENKINS_HOME=/home/jenkins/jenkins_home
java -jar jenkins_8.war
或在同一行中执行:
export JENKINS_HOME=/home/jenkins/jenkins_home && java -jar jenkins_8.war
其效果如下:
- 首先,设置
JENKINS_HOME
环境变量,使得 Jenkins 知道要将其所有的配置和数据存储在/home/jenkins/jenkins_home
目录下。 - 然后,启动 Jenkins 应用,Jenkins 将使用刚刚设置的
JENKINS_HOME
目录作为其主目录。
这样做的意义
-
数据存储管理:
- 通过设置
JENKINS_HOME
,可以灵活地指定 Jenkins 的主目录位置,方便管理和备份 Jenkins 数据。 - 可以将 Jenkins 数据存储在特定位置,而不是使用默认位置(通常是
/var/lib/jenkins
或者其他根据安装方式不同的默认路径)。
- 通过设置
-
环境配置:
- 可以在不同的环境中使用不同的 Jenkins 主目录,例如在开发、测试和生产环境中使用不同的配置目录。
- 当迁移 Jenkins 实例时,可以简单地更改
JENKINS_HOME
,以便 Jenkins 使用新的数据目录。
启动后会有一个秘钥
插件版本依赖问题解决
这个报错信息来自 Jenkins 插件 “Pipeline: Milestone Step” 版本 119.vdfdc43fc3b9a_,提示 Jenkins 版本不满足要求。详细解释如下:
错误信息解析
Pipeline: Milestone Step (119.vdfdc43fc3b_9a_)
:指的是特定版本的 Jenkins 插件 “Pipeline: Milestone Step”。Jenkins (2.361.4) or higher required
:表示这个插件版本要求 Jenkins 主程序的版本至少为 2.361.4。
具体含义
这个错误提示的意思是,你当前安装的 Jenkins 主程序版本低于 2.361.4,而你安装或尝试使用的 “Pipeline: Milestone Step” 插件版本需要 Jenkins 主程序至少为 2.361.4。因此,插件无法在当前的 Jenkins 环境中运行。
现在需要我们去切换下载源,我们需要切换下载源为华为源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/
指向清华大学开源软件镜像站提供的 Jenkins 更新服务。具体来说,这是一个 Jenkins 更新站点的镜像,提供了与 Jenkins 版本 2.346 相关的更新和插件信息。
具体用途
-
插件更新:
- 该链接提供 Jenkins 插件更新的信息和下载。Jenkins 使用这个更新站点来检查和下载插件的最新版本。
-
更新 Jenkins 核心:
- 如果你正在运行 Jenkins 2.346 或类似版本,这个更新站点会提供与之兼容的更新和补丁。
-
本地镜像加速:
- 使用清华大学开源镜像站的好处是可以通过国内的高速网络访问 Jenkins 更新资源,这比直接从 Jenkins 官方站点下载要快得多,特别是对于国内用户。
这里我们直接下载update-center.json
然后完成进行替换,这里有两个地方需要替换,第一个地方是
我们使用export
指定了JENKINS_HOME
的主目录,我们需要下载update-center.json
替换原来的
mv default.json default.json.bk
mv update-center.json default.json
然后在Jenkins
管理界面配置一下
将这个站点替换为清华镜像源
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json
新的镜像源验证签名失败
进入插件下载目录报错如下
“Jenkins: signature verification failed in update site 'default' (show details)”
“Jenkins: signature verification failed in update site ‘default’ (show details)” 这条错误信息表示 Jenkins 在尝试从默认更新站点获取更新或插件时,无法验证签名。这通常意味着 Jenkins 不能确认下载的更新或插件是否来自可信的来源。
export JENKINS_HOME=/home/jenkins/jenkins_home
nohup java -Djdk.security.allowNonCaAnchor=true -Dhudson.model.DownloadService.noSignatureCheck=true -jar jenkins_8.war --httpPort=8081 > jenkins.log 2>&1 &
参数解释
-
-Djdk.security.allowNonCaAnchor=true
:- 该参数允许使用非 CA(证书颁发机构)签署的证书作为信任锚。这可以解决因为证书问题导致的签名验证失败。
-
-Dhudson.model.DownloadService.noSignatureCheck=true
:- 该参数禁用 Jenkins 的插件和更新签名检查。这可以解决由于签名验证失败导致的更新问题。
现在,我们就彻底完成了部署,整个环境并且准备好了,而且这条命令配置了制定了端口,而且静默启动,还指定了主目录,绕过了签名认真
配置maven环境
好的,按照你的要求,我们将 Maven 安装目录设为 /usr/local/src
,并直接修改 /etc/profile
文件来配置环境变量。
下载 Maven
使用 wget
从华为云镜像站下载 Maven:
cd /usr/local/src
wget https://mirrors.huaweicloud.com/apache/maven/maven-3/3.9.7/binaries/apache-maven-3.9.7-bin.tar.gz
解压 Maven
下载完成后,解压 Maven 包:
tar -xzf apache-maven-3.9.7-bin.tar.gz
重命名解压后的目录以简化路径:
mv apache-maven-3.9.7 maven
配置环境变量
为了让 Maven 可以在终端中全局使用,我们需要配置环境变量。编辑 /etc/profile
文件:
vim /etc/profile
在文件末尾添加以下内容:
# Maven environment variables
export M2_HOME=/usr/local/src/maven
export PATH=${M2_HOME}/bin:${PATH}
保存并关闭文件。然后使这些更改立即生效:
source /etc/profile
配置 Maven 仓库镜像和本地仓库路径
编辑 Maven 的设置文件 settings.xml
,配置阿里云的 Maven 仓库镜像和本地仓库路径。这个文件通常位于 Maven 安装目录的 conf
目录下。
vim /usr/local/src/maven/conf/settings.xml
在文件中做以下修改:
- 设置本地仓库路径: 在
<localRepository>
标签内添加本地仓库路径。 - 添加阿里云的 Maven 仓库镜像: 在
<mirrors>
标签内添加阿里云镜像配置。
修改后的 settings.xml
文件内容如下:
<settings>
<!-- Local Repository Path Configuration -->
<localRepository>/usr/local/src/maven/maven-repo</localRepository>
<!-- Mirrors Configuration -->
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<!-- Other configurations can remain unchanged -->
</settings>
保存并关闭文件。
验证安装
验证 Maven 是否成功安装并配置:
mvn -version
如果输出类似于以下内容,则说明 Maven 安装和配置成功:
Apache Maven 3.9.7 (bb84b2260df7c3dd2fbabe468b23b6ad3f05db84)
Maven home: /usr/local/src/maven
Java version: 1.8.0_292, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.49.1.el7.x86_64", arch: "amd64", family: "unix"