# Jenkins教程 - 2 环境安装

使用 Jenkins 实现自动化集成部署,首先要准备三台服务器。

  • Git 服务器

这里使用 gitee 码云就好了,如果想有自己的 git 服务器,可以部署 GitLab 进行搭建。

  • 业务服务器

业务服务器也就是我们开发的项目运行的服务器,需要将项目部署到这台服务器。

  • Jenkins 服务器

Jenkins 服务器来实现项目的自动化打包部署,将项目自动上传部署到业务服务器。

# 2.1 Git 服务器

使用 gitee码云 进行代码管理就行,所以这个服务器就不用了。

如果使用 GitLab ,还需要搭建属于自己的 Git 服务器,比较麻烦。

# 2.2 业务服务器

业务服务器就是运行我们项目的服务器,这里使用 SpringBoot 实现一个简单的项目,所以安装 JDK 就可以了。

后面使用 Jenkins 将项目自动部署到这台服务器。

我用的是 ubuntu22.04 ,直接执行 java 命令,会提示如何安装 JDK。

直接执行安装就可以了,这里根据 Jenkins 版本,最低也要安装 JDK11。

# 2.3 Jenkins 服务器

需要安装:

  • Jenkins :肯定是需要的;
  • JDK :Jenkins 是 Java 语言开发的,所以需要安装 JDK;
  • Maven :进行项目的构建;
  • Git :用来拉取代码。

# 1 安装 JDK

和上面业务服务器中安装 JDK 一样。

# 2 安装 Jenkins

Jenkins 官网:https://www.jenkins.io/,直接去下载页面下载即可。

也可以访问 Jenkins 中文官网:https://www.jenkins.io/zh/,但是我看到中文网站的版本比较旧,这里我使用英文官网的最新版本。

Jenkins 就是基于 Java 开发,提供了 war 包、原生包/安装程序和 Docker 镜像的安装方式,这里我们直接下载 war 包,然后后面直接 java -jar 运行这个 war 包就可以了。


直接下载 war 包,然后上传到 Jenkins 服务器,然后使用如下指令直接运行 war 包即可:

# 默认是8080端口
java -jar jenkins.war

# 如果要修改端口,可以使用--httpPort参数
java -jar jenkins.war --httpPort=8081
1
2
3
4
5

上面的命令是在前台运行 jenkinsctrl + c 后就停止运行了。

如果是使用 SSH 连接的 Jenkins 服务器,关闭 SSH 连接,Jenkins 服务也会停止,所以需要在后台运行。

所以我们可以在后台运行 Jenkins 服务:

# 在后台运行jenkins,日志输出到jenkins.log
nohup java -jar jenkins.war > jenkins.log 2>&1 &
1
2

运行项目后,就可以通过浏览器进行访问 Jenkins 管理页面了。


我的 Jenkins 的服务器 IP 是 192.168.0.106,所以可以通过 192.168.0.106:8080 来访问:

Jenkins 第一次运行需要初始化数据,所以访问的时候,可能会提示一个等待页面,等待一会就好了。

提示输入管理员密码,管理员密码在运行 java -jar jenkins.war 指令的时候,在控制台有打印出来,也可以在 ~/.jenkins/secrets/initialAdminPassword 文件中找到。

登录后显示:

选择安装推荐的插件进行安装,等待安装完成:

安装完成,会跳转到创建管理员账户页面,可以填写信息创建一个管理员,下次就可以使用创建的用户登录 Jenkins 管理页面了:

然后保存,进行实例配置,继续保存并完成:

然后,开始使用:

然后跳转到管理界面了:

# 3 安装 Maven

我这里直接使用 apt 进行安装 Maven 了。

如果你不可以,可以去 Maven 官网下载 Maven 的安装包,然后直接解压到 /usr/local 目录下,这样就不用在配置环境变量了,比较简单,这里就不介绍了。

安装完成,查看 maven 版本:

# 查看maven版本
mvn -v
1
2

正确显示信息表示安装成功:


配置Maven镜像

后面使用Maven构建 SpringBoot 项目,从官方网站下载依赖 jar 包会很慢,所以配置一下 Maven,使用阿里云镜像。

找到 Maven 下的 settings.xml(执行 mvn -v 会显示 maven 的目录),将下面的配置添加到 <mirrors> 标签下:

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

1
2
3
4
5
6
7

如下图:

# 4 安装 Git

使用yum安装

直接运行指令就好了:

yum install git
1

安装完成,查看 git 版本信息:

git --version
1

能打印出 git 的版本即表示安装成功。


使用apt安装

sudo apt install git
1

安装完成,查看 git 版本信息:

git --version
1

能打印出 git 的版本即表示安装成功。

# 2.4 Docker安装 Jenkins

# 1 搜索下载镜像

搜索 jenkins 镜像,下载 jenkins/jenkins 镜像。

# 搜索jenkins镜像
docker search jenkins

# 下载jenkins镜像
docker pull jenkins/jenkins

# 查看本地已下载的镜像
docker images
1
2
3
4
5
6
7
8

搜索镜像:

这里可以去dockerhub官网( https://hub.docker.com/ ),查看一下jenkins有哪些镜像,我下载 jenkins/jenkins 镜像,后面下载插件的时候提示jenkins版本低,后来我使用了jdk17 版本的jenkins镜像:

docker pull jenkins/jenkins:latest-jdk17
1

下载镜像:

# 2 运行容器

在运行镜像前,先在主机上创建目录,用于挂载容器中的目录,来持久保存 Jenkins 的配置。

# 我这里在家目录下创建的目录,目录自己定义,后面映射对应就好了
mkdir -p ~/projects/jenkins/jenkins_home
1
2

启动容器

docker run -d -u 0 --restart=always -p 8080:8080 -p 50000:50000 -v /home/doubi/projects/jenkins/jenkins_home:/var/jenkins_home --name myjenkins jenkins/jenkins
1

解释一下:

  • -d: 指定容器在后台运行;
  • -u 0: 将容器的用户切换为 root 用户,避免后面因权限不足无法进行某些安装操作;
  • -p 8080:8080: 将主机的 8080 端口映射到容器的 8080 端口。Jenkins 默认的 web 界面端口是 8080;
  • -p 50000:50000: 将主机的 50000 端口映射到容器的 50000 端口。这个端口通常用于 Jenkins 运行构建代理;
  • -v /home/doubi/projects/jenkins/jenkins_home:/var/jenkins_home: 将主机上 /home/doubi/projects/jenkins/jenkins_home 目录挂载到容器内的 /var/jenkins_home 目录。这个目录包含了 Jenkins 的数据,包括配置、作业和插件等。这样做是为了持久化 Jenkins 的数据,以便容器被删除后数据仍然保留在主机上;
  • --name myjenkins: 为容器指定一个名字,这里是 myjenkins。这样可以方便地通过容器名字来管理和访问容器;
  • jenkins/jenkins: 指定要使用的 Jenkins 镜像,这个是我们刚才下载的镜像。

运行完成,使用 docker ps 可以查看到运行的镜像。

# 3 访问Jenkins

容器已经运行了,可以使用 http://IP:8080 访问 Jenkins。

登录需要密码,在运行容器的时候,我们已经将容器的 var/jenkins_home 挂载到宿主机了,直接到挂载的目录找到 secrets/initialAdminPassword 文件,查看密码就好了。

然后按照前面的操作登录,安装推荐的插件、创建用户,操作是一样的。


如果遇到安装插件失败,可以通过如下命令查看一下容器日志:

# myjenkins是容器名称
docker logs myjenkins -f  
1
2

通过日志查看一下插件安装失败的原因。

我查看日志遇到一个错误 Jenkins (2.387.3) or higher required ,后面我使用了 jdk17 版本的最新 jenkins 镜像:

docker pull jenkins/jenkins:latest-jdk17
1

你可以到 dockerhub 官网(https://hub.docker.com/)搜索一下 jenkins 镜像,选择合适的版本。

# 4 查看Git

进入到容器

# 进入容器,刚才启动容器的时候,名称为myjenkins
docker exec -it myjenkins /bin/bash
1
2

查看Git

# 查看Git版本
git --version
1
2

可以看到 Jenkins 容器中已经集成了Git。

所以我们就不用再安装了。

运行指令的时候,注意是在容器内,还是在容器外。

# 5 查看JDK

进入到容器

# 进入容器,刚才启动容器的时候,名称为myjenkins
docker exec -it myjenkins /bin/bash
1
2

查看 Java 版本

# 查看Java版本
java -version
1
2

可以看到 Jenkins 容器中已经也已经集成了JDK,所以不用再安装了。

# 6 配置Maven

很遗憾,Jenkins 容器中没有安装 Maven,需要在Jenkins容器中安装被配置 Maven。

使用 apt 安装即可。

# 先更新一下,否则安装maven可能提示找不到包
apt update

# 安装maven
apt install maven
1
2
3
4
5

安装完成,查看 maven 信息:


配置Maven镜像

后面使用Maven构建 SpringBoot 项目,从官方网站下载依赖 jar 包会很慢,所以配置一下 Maven,使用阿里云镜像。

因为要使用 vim 命令编辑配置,所以需要安装一下 vim

# 安装vim
apt install vim
1
2

上面使用 mvn -v 命令查看 Maven 信息的时候,已经显示了 Maven 的目录,找到 /usr/share/maven/conf 下的 settings.xml,将下面的配置添加到 <mirrors> 标签下:

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
1
2
3
4
5
6

如下图: