前言
本文旨在使用BlueOcean实现构建可视化与使用Maven构建上一节Jenkins教程(三)添加凭据与流水线拉取Git代码拉下来的代码
什么是Blue Ocean
Blue Ocean 重新思考Jenkins的用户体验,从头开始设计Jenkins Pipeline, 但仍然与自由式作业兼容,Blue Ocean减少了混乱而且进一步明确了团队中每个成员 Blue Ocean 的主要特性包括:
- 持续交付(CD)Pipeline的 复杂可视化 ,可以让您快速直观地理解管道状态。
- Pipeline 编辑器 - 引导用户通过直观的、可视化的过程来创建Pipeline,从而使Pipeline的创建变得平易近人。
- 个性化 以适应团队中每个成员不同角色的需求。
- 在需要干预和/或出现问题时 精确定位 。 Blue Ocean 展示 Pipeline中需要关注的地方, 简化异常处理,提高生产力
- 本地集成分支和合并请求, 在与GitHub 和 Bitbucket中的其他人协作编码时实现最大程度的开发人员生产力。
简言之:简化复杂可视化,提供更个性直观的界面,可以精准定位构建失败的位置
安装Blue Ocean
- 准备条件:是管理员用户,或拥有安装插件的权限
Manage Jenkins
> Manage Plugins
![](https://i-blog.csdnimg.cn/blog_migrate/ff50c546c15d4d35746e2c118c297f66.png)
过滤
输入Blue Ocean
> 勾选第一个Blue Ocean
> 直接安装
> 安装完成返回首页
![](https://i-blog.csdnimg.cn/blog_migrate/b5738cd40ef1be9e1a4776b83c704af3.png)
这里提示有很多
Blue Ocean
的插件,我们是无需手动安装的,通过安装Blue Ocean
会自动安装官方推荐的其它组件
![](https://i-blog.csdnimg.cn/blog_migrate/2d37ec614157b59b4f50f957b9f2defc.png)
此时我们可以使用 <host>:<port>/blue
进行访问到Blue Ocean的页面
![](https://i-blog.csdnimg.cn/blog_migrate/89bbf59bd093a79aba942b2a95f10c06.png)
这里先不讲,配置好Maven后,我们再来使用它来构建一次
使用Maven构建工具
这里使用docker的maven镜像来进行构建工程,以减少多个构建工程使用同一构建工具时的冲突问题
另一方面是演示下agent的使用😆
准备条件:
- 安装Docker
- 添加Jenkins到Docker用户组
sudo usermod -aG docker jenkins && newgrp docker
- 重启Jenkins
创建自定义maven的配置文件/home/jenkins/mvnrepo/settings.xml
,使用了阿里的镜像源,本地仓库这个不用改,这里会被容器映射到容器内/root/.m2
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
</settings>
在Github的仓库中我创建了chapter2分支,里面的Jenkinsfile如下
pipeline {
agent { //这里使用docker镜像来启动maven,这样有个好处就是多个工程同时构建时不会出现冲突而失败
docker {
image 'maven:3.6-alpine'
args '-u root -v /home/jenkins/mvnrepo:/root/.m2' //持载到本地,减少重复下载量,使用ali源
}
}
stages {
stage('Pull Git Demo') {
steps{
//拉取代码
git 'https://github.com/hellxz/springboot-demo1.git'
}
}
stage('Build') {
steps {
//执行构建命令
sh 'mvn -B -DskipTests clean package'
}
}
}
}
持载的那个位置下的settings.xml会被maven容器使用,从而修改镜像源,另外在settings.xml中指不指定本地仓库都没区别,亲测
创建流水线
![](https://i-blog.csdnimg.cn/blog_migrate/53b1245c8bd2559ae7ddb5567def7066.png)
指定Jenkinsfile所在的版本控制与分支,这里我使用的是https://github.com/hellxz/JenkinsfileTutorials.git
分支是chapter2,检出到chapter2目录下,Jenkinsfile直接就在仓库的根目录内
![](https://i-blog.csdnimg.cn/blog_migrate/6ee42d457008c183bc35c4223120d79e.png)
启动测试
输入http://<host>:<port>/blue
, 点击刚才创建的maven build demo
项目
![](https://i-blog.csdnimg.cn/blog_migrate/13a18275a9244ddba030bdbb49bf71c8.png)
点击运行
构建成功,我们查看Build
步骤,可以看到构建成功了
![](https://i-blog.csdnimg.cn/blog_migrate/dd96efabdde0be2e58282503e0cb0dcf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/008a71a08b5692c760183980d28d28fe.png)
由于在公司里我使用的是本地配置的maven,所以查hub.docker.com,对Jenkinsfile中使用maven镜像的部分修改了几次,不然你会看到拉取的jar包都是从阿里源中拉出来的
查看构建目录
![](https://i-blog.csdnimg.cn/blog_migrate/b1f8d949bc99cec5389c26bb8d63b63b.png)
本文结束
后记
被maven-docker的文档小坑了一下,文档中提到的自定义settings.xml文件是持载到另一个目录下
![](https://i-blog.csdnimg.cn/blog_migrate/4778cf87216d0c845f256db50d896348.png)
还有就是maven容器内使用的用户是非root用户,如果按官方文档中不加-u root
,那么容器内的/root/.m2
目录是持载不出来的!
当前我们的构建属于脏构建,即上次的构建结果与代码拉取结果都在同一个工作目录中,这样是需要修改的,现在为了简单演示没有添加,可以在拉代码前加一个清理空间的步骤,使用
cleanWs()
命令
下篇准备写把微服务项目打成Docker镜像,静请期待
引文
Using docker image of maven with jenkins - could not create local repository
本文系Hellxz学习与实践文章,禁止布布扣、码迷、爱码网等第三方爬虫网站爬取,转载请在醒目位置注明出处:https://www.cnblogs.com/hellxz/p/pipeline_maven_build.html