Skip to content

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 包即可:

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

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

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

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

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

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

运行项目后,就可以通过浏览器进行访问 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 版本:

shell
# 查看maven版本
mvn -v

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


配置Maven镜像

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

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

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

如下图:

4 安装 Git

使用yum安装

直接运行指令就好了:

shell
yum install git

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

shell
git --version

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


使用apt安装

shell
sudo apt install git

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

shell
git --version

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

2.4 Docker安装 Jenkins

1 搜索下载镜像

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

shell
# 搜索jenkins镜像
docker search jenkins

# 下载jenkins镜像
docker pull jenkins/jenkins

# 查看本地已下载的镜像
docker images

搜索镜像:

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

shell
docker pull jenkins/jenkins:latest-jdk17

下载镜像:

2 运行容器

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

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

启动容器

shell
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

解释一下:

  • -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 文件,查看密码就好了。

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


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

shell
# myjenkins是容器名称
docker logs myjenkins -f

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

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

shell
docker pull jenkins/jenkins:latest-jdk17

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

4 查看Git

进入到容器

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

查看Git

shell
# 查看Git版本
git --version

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

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

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

5 查看JDK

进入到容器

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

查看 Java 版本

shell
# 查看Java版本
java -version

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

6 配置Maven

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

使用 apt 安装即可。

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

# 安装maven
apt install maven

安装完成,查看 maven 信息:


配置Maven镜像

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

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

shell
# 安装vim
apt install vim

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

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

如下图: