博主花费了几天时间从官网学习Jenkins的使用,途中踩了不少坑,特此分享。
- 不要使用Jenkins的较旧版本
- 需要下载兼容的插件版本,非常麻烦
- 不要使用Windows的Docker desktop
- 不要使用WSL(Windows的Linux子系统)
文章使用的是Ubuntu 22.04.03版本(ubuntu-22.04.3-desktop-amd64.iso)
参考官方文档:
1、使用Jenkinsfile定义流水线
使用Jenkinsfile
https://www.jenkins.io/doc/book/pipeline/jenkinsfile/
流水线语法
https://www.jenkins.io/doc/book/pipeline/syntax/
2、在流水线中使用Docker
https://www.jenkins.io/doc/book/pipeline/docker/
3、管理Jenkins插件
https://www.jenkins.io/doc/book/managing/plugins/
4、使用环境变量
https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
目录
[Blue Ocean插件](#Blue Ocean插件)
[访问Blue Ocean](#访问Blue Ocean)
前置环境安装
安装JDK
在Ubuntu虚拟机上安装jdk-21。
安装Maven
在Ubuntu虚拟机上安装Maven,跟在Windows上安装是一样的,但是/config/settings.xml文件中的`<localRepository>`节点指定的目录要改一下,改成linux的目录。
博主使用的Maven安装目录和本地仓库路径:
- 安装目录:/software/maven/apache-maven-3.6.1
- 本地仓库:/software/maven/repository
安装Docker
在Ubuntu上提前安装Docker,因为构建镜像要使用docker命令。
Ubuntu上安装和使用Docker
https://blog.csdn.net/heyl163_/article/details/131503469
Jenkins快速入门
Jenkins官网
学习Jenkins很坑的地方之一就是中文和英文文档的内容不一样,需要结合两种文档学习。
中文文档
https://www.jenkins.io/zh/doc/
英文文档
https://www.jenkins.io/doc/
Jenkins流水线
Jenkins中的任务(Job)以流水线(Pipeline)的形式运行。
Blue Ocean插件
Blue Ocean是Jenkins官方文档推荐的Web UI插件,可以很方便定义流水线。
访问Blue Ocean
安装完Blue Ocean插件之后,重启Jenkins。
如下图,点击右上角的对应图标,点击打开Blue Ocean即可访问Blue Ocean的界面。

创建流水线
点击【创建新的流水线】按钮,

创建证书
以Gitee为例,介绍如何连接代码仓库。
1、填写Git仓库的地址;填写Git账号及密码,点击【创建证书】按钮,保存Git账号和密码。
如果不创建证书,每次创建流水线都要重新输入账号密码。

创建流水线
点击【创建流水线】按钮完成创建。

流水线创建完成

查看流水线执行
点击活动下方的列表中的一行,可以查看执行结果。

编辑流水线过程
点击右上角的编辑图标,可以对流水线进行编辑。

修改代理类型

创建环境变量
点击环境变量表格的第一行最后一列的+按钮添加环境变量。

添加执行步骤
点击任意一个+图标按钮,可以在各阶段之前/之后添加步骤。

输入阶段名称

添加步骤
点击【+添加步骤】按钮,为当前阶段添加步骤。
选择步骤类型

输入执行脚本

步骤创建完成。

最后,只需要点击【保存】按钮即可将变更提交回代码仓库。

Jenkinsfile
Jenkinsfile是定义流水线的脚本文件。
如果创建流水线时连接的仓库的项目同级目录下有Jenkinsfile文件,Jenkins会自动加载里面的内容。
开始使用Jenkins
下载Jenkins
选择版本
根据Java版本选择下载对应版本的jenkins安装包。
https://www.jenkins.io/doc/book/platform-information/support-policy-java/
直接下载最新lts版本(如上图:2.555.1)即可,好处是:不需要考虑安装的插件的版本。

下载安装包
直接访问lts版本的最新版本即可,Java版本要求页面的表格不是实时更新的。
java
https://mirrors.jenkins.io/war-stable/
点击页面最上面两个下载链接都可以下载Jenkins的最新lts版本。

启动Jenkins
创建Jenkins的主目录,用于存放Jenkins的安装包(jenkins.war)。
bash
/software/jenkins
将下载下来的jenkins.war文件上传到Ubuntu的/software/jenkins目录下。
java
cd /software/jenkins
java -jar jenkins.war
第一次运行jenkins.war会在root目录下创建jenkins的安装目录:.jenkins

访问Jenkins
获取IP
获取Ubuntu的IP地址,比如博主获取到的IP是:192.168.106.128
bash
ip addr
观察日志
等待Jenkins完全启动好了之后,继续下面的操作。

复制密码
复制这个密码,在第一次访问Jenkins时需要

浏览器访问
通过浏览器地址栏输入8080端口,访问Jenkins
bash
http://192.168.106.128:8080/
输入密码

下载插件
默认只需要点击蓝色的选项:【安装推荐的插件】
接下来就是漫长的插件安装过程。

如果不是第一次使用Jenkins,完全不需要这么做,太浪费时间了。
点击第二个选项:【选择插件来安装】,点击【无】,取消所有插件的勾选。

创建用户
可以创建一个自定义的管理员账户,输入密码和你的名字/昵称(可以是中文)。
也可以使用默认的amin账户,密码就是前面从启动日志里复制的密码。

填写完表单信息之后,点击【保存并完成】,进入下一个步骤。

实例配置
这里不需要更改,直接点击【保存并完成】

完成初始化
至此,Jenkins所有安装初始化过程都已经完成了。

点击【开始使用Jenkins】进入到Jenkins首页。

使用Jenkins
保存插件
如果你经历过了下载插件的漫长过程,可以将/root/.jenkins/plugins目录压缩一下,并保存下来。
bash
cd /root/.jenkins
zip -r plugins.zip plugins
下次新安装Jenkins时,就不需要重新去下载插件了。
把这个plugins.zip上传到jenkins安装目录下并解压。
jenkins启动完成后,就会自动完成这些插件的加载。
插件管理
点击右上角的设置(齿轮)小图标。

然后点击Plugins选项,打开插件管理页面。

安装插件
点击左侧Avaliable plugins,在搜索框输入插件名称搜索插件,勾选并点击【Install】安装该插件。

点击【Install】下载按钮之后,会打开下载进度的界面,显示插件的所有依赖的下载进度。

高级安装
如图所示,依赖下载失败是很常见的,即使使用了科学上网工具,也难免会因为超时而失败。

失败的原因一般有两种:
- Connect timed out:连接超时,导致下载失败
- Failed to load: XXX Plugin,Failed to install xxx plugin:由于依赖的插件下载失败而加载失败
下载失败
点击Failure后面的Details按钮。

查看展开的失败原因:连接超时。

这时候,只需要复制插件名称,然后到插件安装页面手动下载。

点击搜索结果,进入到插件的发布页面,点击最新版本的下载链接。

会下载下来一个.hpi文件

点击【Advanced settings】(高级设置)菜单,点击【浏览】文件框选择刚刚下载的.hpi文件。

选择好文件之后,点击【Deploy】直接安装插件。

可以看到,在任务列表最后面新增了一个插件安装任务。

加载失败
由于被依赖的插件下载失败,会导致依赖的插件加载失败。
这种情况只需要通过上述方式安装下载失败的被依赖插件(案例中是scm-api)即可,然后重新启动Jenkins。

卸载插件
点击左侧Installed plugins,在搜索框输入插件名称搜索插件,点击插件列表每行的右边删除图标删除该插件,点击确认框的【Yes】按钮完成删除操作。

常用插件
Jenkins常用插件列表:
|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
| 插件名称 | 插件地址 |
| Pipeline | https://plugins.jenkins.io/workflow-aggregator/ |
| Blue Ocean | https://plugins.jenkins.io/blueocean/ |
| Docker Pipeline | https://plugins.jenkins.io/docker-workflow/ |
流水线Git仓库
文章中使用的Git仓库地址,实现了简单的CI/CD
jenkins CI/CD测试使用项目
https://gitee.com/muyu-chengfeng/jenkins-ci.git