2021/03/08 从零开始构建基于Kubernetes的DevOps平台

第1章 DevOps平台介绍

1.1 基于Kubernetes的DevOps平台实践介绍

在这里插入图片描述

1.2 DevOps及CICD发展介绍

持续集成,持续交付
在这里插入图片描述
很早以前的开发流程。产品迭代周期长,灵活性差

在这里插入图片描述
开发测试协同工作

在这里插入图片描述
devops把开发测试运维三个角色协作起来了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第2章 Jenkins初体验

2.1 Kubernetes中部署Jenkins

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
jenkins文件先跑起来,部署到K8S里

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
jenkins固定到slave1节点
在这里插入图片描述
在这里插入图片描述
jenkins需要执行任务的时候调用K8Spod的所以需要有权限,serviceaccount,给了一个cluster-admin最大权限
在这里插入图片描述
这里做了一个定点
在这里插入图片描述
jenkins使用的目录是/var/jenkins_home
在这里插入图片描述
初始化容器对容器权限进行了修复,jenkins在容器内部默认使用1000用户启动进程,所以在初始化容器的时候给这个目录赋值上1000用户
在这里插入图片描述
使用ingress来给外部访问

在这里插入图片描述
jenkins支持master和slave,50000就是master提供给slave通信的端口
在这里插入图片描述
设置一个别名
在这里插入图片描述
在这里插入图片描述
创建的一个初始化密码

在这里插入图片描述
在这里插入图片描述
加一个解析

在这里插入图片描述
在这里插入图片描述
看到这个就完全启动了

在这里插入图片描述
在slave1的挂载目录也可以看到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
默认链接的插件地址比较慢,这里可以直接跳过
在这里插入图片描述
在这里插入图片描述
修改默认源
在这里插入图片描述
在这里插入图片描述
替换一下源

在这里插入图片描述
官方建议使用的docker镜像版本
在这里插入图片描述
在这里插入图片描述
修改管理员的密码

在这里插入图片描述

2.2 Jenkins汉化

在这里插入图片描述
在这里插入图片描述

2.3 Jenkins基础功能实践(上)

在这里插入图片描述
官方的仓库的版本占的资源比较多,什么都有,推荐用sameersbn版本的,只需要基础的仓库功能就行
在这里插入图片描述
直接docker安装也可以,postgresql,redis,gitlab
在这里插入图片描述
在这里插入图片描述
用secret去管理账号密码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
secret类型是generic,secret名字是gitlab-secret。因为当作环境变量用所以from-env-file
在这里插入图片描述
加了base64

在这里插入图片描述
在这里插入图片描述
这里起一个service,这里希望通过服务发现,servicename的方式去访问
在这里插入图片描述
整个postgres是用deployment部署
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

环境变量从secret里去引用

在这里插入图片描述
要给节点打一个标签才能调度过去

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
给slave2打一个标签
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
进入到pod创建一个数据库
在这里插入图片描述
在这里插入图片描述
redis也同样也起一个service

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
需要被外部访问,可以用ingress去暴露服务

在这里插入图片描述
默认nginx的client_max_body_size 客户端通过nginx代理最大能上传1M,git push走http协议的化也会受这个限制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
直接把地址指向它

在这里插入图片描述
这里引用了secret
在这里插入图片描述

数据挂载
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
需要给服务器打一个label

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
已经启动了

在这里插入图片描述
可以查看日志。这里只有7个服务
在这里插入图片描述
正常会有十几个服务,这个资源消耗比官方小很多

在这里插入图片描述
加一个gitlab

在这里插入图片描述
初始化密码

在这里插入图片描述
填入刚才设置的管理员密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就创建好了
在这里插入图片描述
在这里插入图片描述
先把origin改个名字

在这里插入图片描述
还需要添加一个origin
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建了一个新的分支master
在这里插入图片描述
在这里插入图片描述

2.4 Jenkins基础实践(下)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在设置里,但是有个问题,jenkins的dns解析不了这个地址

在这里插入图片描述
coredns是通过configmap加进去的
在这里插入图片描述
容器里是直接在pod的host文件里改
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在jenkins访问gitlab通不通
在这里插入图片描述
现在能够访问
在这里插入图片描述
jenkins添加凭据
在这里插入图片描述

在这里插入图片描述
全局凭据里点添加凭据

在这里插入图片描述
选择gitlab的apitoken
在这里插入图片描述
用户的access token

在这里插入图片描述
在这里插入图片描述
权限全有
在这里插入图片描述
apitoken只有一次机会看到

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试是否ok

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
什么时候去触发任务,推送之后就会触发任务
在这里插入图片描述
gitlab要在webhook里配置
在这里插入图片描述
jenkins的webhook地址

在这里插入图片描述
jenkins下面生成一个token在这里插入图片描述

在这里插入图片描述
现在设置只要推送就会触发webhook

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
勾选上即可

在这里插入图片描述
这里就有了一个webhook
在这里插入图片描述
执行完发送给钉钉

在这里插入图片描述
在这里插入图片描述
直接test
在这里插入图片描述
提交测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就收到了
在这里插入图片描述
在这里插入图片描述

2.5 Master-Slaves模式

在这里插入图片描述
这个是jenkins安装的时候的家目录

在这里插入图片描述
查看对应的目录。这个目录就是myblog的代码
在这里插入图片描述
想让master分发任务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以打一个标签指定任务跑在对应标签的slave上允许
在这里插入图片描述
在这里插入图片描述
下载这个jar包
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提示端口访问不了

在这里插入图片描述
这里只暴露了8080

在这里插入图片描述
ingress访问不了,因为只反代了8080,用svc的5000端口是可以的

在这里插入图片描述
直接走clusterip试试
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
clusterip:8080
在这里插入图片描述

在这里插入图片描述
现在就访问通了

在这里插入图片描述
在这里插入图片描述
现在已经是ok的了

在这里插入图片描述
给项目配置节点,刚才写的标签

在这里插入图片描述
已经分发到节点上了

在这里插入图片描述
现在就可以了

在这里插入图片描述

2.6 定制化Jenkins镜像

安装插件需要连接外部的网络,但是有些环境没有外网,就可以制作镜像
在这里插入图片描述
这些是装的插件
在这里插入图片描述
这个脚本是获取脚本的
在这里插入图片描述
在已经安装好的jenkins上获取。账号密码。访问地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
地址换成podip

在这里插入图片描述
在这里插入图片描述
有这么多插件

在这里插入图片描述
下面就可以构建了
在这里插入图片描述

第3章 流水线pipeline实践

3.1 Pipeline流水线介绍

在这里插入图片描述
在这里插入图片描述

3.2 流水线语法详解

流水线两种语法类型,脚本时流水线,声明式流水线
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

agent就是用哪个执行器去执行
在这里插入图片描述
在这里插入图片描述
每个step都会做不同的工作

在这里插入图片描述
整个任务执行的阶段,都可以读到这个变量

在这里插入图片描述
**stages是整个任务的定义。checktout一般是拉代码,scm是source code manager源代码管理
**

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
任务之后会根据成功失败执行,不管成功失败都会执行always

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的10代表保存10条构建记录,option就是设置一些任务选项相关的配置
在这里插入图片描述
通常都是不允许任务同时进行,都是一个个来
在这里插入图片描述
任务运行的超时时间
在这里插入图片描述
任务失败尝试多少次
在这里插入图片描述
在这里插入图片描述
这个构建颜色黄色可以是单元测试构建的时候,10次,有3次失败可以认为是不稳定
在这里插入图片描述

3.3 流水线脚本案例实践

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
可以给master打一个标签

在这里插入图片描述
保存一下

在这里插入图片描述
在这里插入图片描述
下面是dockerfile
在这里插入图片描述
在这里插入图片描述
可以选择checkout代码

在这里插入图片描述
在这里插入图片描述

这里只是生成流水线的脚本
在这里插入图片描述
在这里插入图片描述
这就是片段生成器的用法

在这里插入图片描述
这个镜像就是刚才jenkins构建的

在这里插入图片描述
在这里插入图片描述

3.4 Blue Ocean的使用

在这里插入图片描述
在这里插入图片描述
这个界面看起来比较高大上

在这里插入图片描述
这里面就显示了运行的几个步骤

在这里插入图片描述
可以看到输出

在这里插入图片描述
只能针对流水线
在这里插入图片描述

第4章 Jenkinsfile实践

4.1 实践1:使用Jenkinsfile管理pipeline

在这里插入图片描述
任务可以和研发的代码做版本控制
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在项目跟目录下创建jenkinsfile
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在项目里就已经有这个文件了

在这里插入图片描述
在这里插入图片描述
手动再触发一次构建
在这里插入图片描述
从项目里读取jenkinsfile
在这里插入图片描述

4.2 实践2:优化及丰富pipeline

这里配置了一次仓库
在这里插入图片描述
pipline也指定了,这样属于重复指定

在这里插入图片描述
在这里插入图片描述

这里就是一个优化点
在这里插入图片描述
这里有一个变量
在这里插入图片描述
打印的环境变量里有一个gitcommit,这个id就是这一次代码提交的id

在这里插入图片描述
这样构建仓库的tag就对应commitid
在这里插入图片描述
这里发送的消息就丰富了点
在这里插入图片描述
在这里插入图片描述
失败也会通知构建失败
在这里插入图片描述
这里失败加了尝试2次
在这里插入图片描述
可以把之前的pipeline替换一下
在这里插入图片描述
配置一下webhook

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
myblog触发push后,会推送jenkins进行构建
在这里插入图片描述
替换一下jenkinsfile
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
已经执行到构建镜像了

在这里插入图片描述
构建成功

在这里插入图片描述

4.3 实践3:流水线中调用k8s部署服务

在这里插入图片描述
把服务部署到K8S里

在这里插入图片描述
在项目里创建一个deploy目录,拷贝一下之前的部署文件
在这里插入图片描述

在这里插入图片描述
deploy文件不能写死,应该写成模板
在这里插入图片描述
在这里插入图片描述

这里部署的时候先去做一次替换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在slave2上创建kubectl的配置文件
在这里插入图片描述
替换一下jenkinsfile
在这里插入图片描述
在项目里用git提交一下
在这里插入图片描述
这样就正在执行了

在这里插入图片描述
在这里插入图片描述
执行成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里进行模板替换

在这里插入图片描述

4.4 实践4:流水线中敏感信息的处理

如果image版本是最新的,那就说明部署成功
在这里插入图片描述
但是token收明文的,可以使用凭据管理敏感信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以直接去引用一个credentials的id
在这里插入图片描述
默认会创建三个环境变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以创建一个凭据叫dingTalk,token放到密码即可,用户名不会去使用
在这里插入图片描述
在environment里加上ding talk环境变量
在这里插入图片描述
这里取一下环境变量

在这里插入图片描述
在这里插入图片描述
准备构建
在这里插入图片描述
现在token里就做了隐藏

在这里插入图片描述
但是企业中一般是多分支的,每个分支都需要构建
在这里插入图片描述

第5章 多分支流水线实践

5.1 多分支流水线的使用

develop分支一般发布到开发环境,测试好没问题,合并到master发布到集成测试,测试号没问题,合并到release分支发布到线上
在这里插入图片描述
就有了多分支流水线
在这里插入图片描述
创建一个job

在这里插入图片描述
选择多分支流水线

在这里插入图片描述
显示名称类似displayname,可以不写

在这里插入图片描述
在这里插入图片描述
先写.*,匹配全部试试

在这里插入图片描述
还可以发现标签在这里插入图片描述
文件名是Jenkinsfile,放在项目跟目录下

在这里插入图片描述
之前是做的webhook,多分支的建议用这个,扫描,意味着执行不是gitlab推送执行的,而是jenkins自己去扫。选择1分支是最快的

在这里插入图片描述
保存
在这里插入图片描述
多分支流水线是区分分支的,每个分支都必须符合正则,还有跟目录下有jenkinsfile

在这里插入图片描述
建立一个分支
在这里插入图片描述
推送到远程仓库
在这里插入图片描述
这样就匹配到了develop分支,不同的分支写不同的fenkinsfile,部署到不同环境里
在这里插入图片描述
试试创建一个tag

在这里插入图片描述
在这里插入图片描述
这样就获取到了

在这里插入图片描述

5.2 实践1:美化消息通知内容

钉钉是支持markdown的
在这里插入图片描述
声明式流水线可以直接调用脚本流水线,script里可以直接调用脚本流水线的语法
在这里插入图片描述
之前的printenv里的stagename

在这里插入图片描述
每个阶段的stagename的值不一样
在这里插入图片描述
取最新的一次log记录

在这里插入图片描述
上一次提交写的内容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
复制修改jenkinsfile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
任务执行是在容器里而不是宿主机上
在这里插入图片描述
可以回放点id,查看运行的当前用户是什么
在这里插入图片描述
id是Jenkins,所以没有权限和docker命令交互
在这里插入图片描述
还是启动slave2节点,因为继续使用master需要挂载docker的socket还需要修改运行权限
在这里插入图片描述
直接修改到slave2运行
在这里插入图片描述
这样运行就没有问题
在这里插入图片描述

这里是构建成功了
在这里插入图片描述

5.3 实践2:Jenkins通知gitlab构建

在这里插入图片描述
构建保留几条数据

在这里插入图片描述
不允许并行构建

在这里插入图片描述
超时时间

在这里插入图片描述

jenkins端调用gitlab的api
在这里插入图片描述
gitlab链接池
在这里插入图片描述
在这里插入图片描述
gitlab插件提供的方法,更新gitlab这次提交的状态
在这里插入图片描述
执行完这个阶段,就通知gitlab这个阶段的任务执行成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

修改jenkinsfile去执行
在这里插入图片描述
在这里插入图片描述
触发构建
在这里插入图片描述
执行成功

在这里插入图片描述
会提交到develop分支上

在这里插入图片描述
点一下这个勾
在这里插入图片描述
在这里插入图片描述
这是gitlab希望和第三方对接,实现的pipeline api

在这里插入图片描述
把jenkins的内容拿了过来
在这里插入图片描述
创建一个
在这里插入图片描述
创建一个merge的时候,可以看到一个流水线状态,如果是一个×号,就不应该merge到master,可以作为一个判断标准
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多分支流水线可以进行管理

在这里插入图片描述
在这里插入图片描述

第6章 Jenkins深度集成Kubernetes

6.1 Jenkins与Kubernetes深度集成配置

之前都是指定节点运行在这里插入图片描述
可以使用K8S的pod来启动slave
在这里插入图片描述
和K8S做集成还是要安装插件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先要重启jenkins,让第一个安装的插件生成最新的版本之后再去安装
在这里插入图片描述
删除pod就等于重启

在这里插入图片描述
在这里插入图片描述
已经装好了
在这里插入图片描述
cloud配置已经移动到了独立的页面
在这里插入图片描述
点一下kubernetes

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
K8S调度的pod在哪个名称空间里

在这里插入图片描述
内部jnlp通信的端口
在这里插入图片描述
超时时间增加多点
在这里插入图片描述
链接测试

在这里插入图片描述
之前创建jenkins服务的时候已经分配了rbac ,serviceaccount,所以pod本身就可以访问K8S集群
在这里插入图片描述
配置pod模板,告诉Jenkins调度哪个pod
在这里插入图片描述
在这里插入图片描述
加一个label
在这里插入图片描述
在这里插入图片描述
节点选择器,jenkins的pod可以运行在哪个节点上
在这里插入图片描述

在这里插入图片描述
配置一个主机的挂载方式
在这里插入图片描述

需要修改1000用户,因为在pod内部是用的1000用户
在这里插入图片描述
在master节点打一个agent=true的label

在这里插入图片描述
在这里插入图片描述

6.2 实践:使用动态jnlp slave执行构建任务

在这里插入图片描述
回放一下,这里改成jnlp-slave
在这里插入图片描述
这里启动一个pod
在这里插入图片描述
在这里插入图片描述
先在节点上打一个标签
在这里插入图片描述
查看一下,默认使用的镜像
在这里插入图片描述
在这里插入图片描述

6.3 实践:定制化jnlp slave容器镜像

slave容器上肯定需要一些工具,git,mvn。python这样的
在这里插入图片描述
在这里插入图片描述
创建构建镜像的目录,拷贝二进制工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更新国内源,安装一些基本工具,创建kube目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
报错了,看看对应的alpine版本进去执行是否报错
在这里插入图片描述
一步步执行看看哪里遇到问题

在这里插入图片描述
在这里插入图片描述
指定版本是可以的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看看现在用的最新的3.12.的alpine。没有python包了,必须指定python版本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以进入容器验证一下
在这里插入图片描述
容器内部是没有socket文件的
在这里插入图片描述
可以在外部挂载socket文件

在这里插入图片描述
现在可以使用docker了
在这里插入图片描述
kubectl也有
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
push到仓库

在这里插入图片描述

6.4 实践:使用动态slave pod实现项目的自动发布

如何在启动的时候调用自己构建的镜像在这里插入图片描述
这里有一个pod模板
在这里插入图片描述
把构建的镜像加到容器列表
在这里插入图片描述
在这里插入图片描述

原来默认是用的这个image,这个镜像的功能就是去链接jenkins-master,作为一个slave
在这里插入图片描述
这里填写了镜像列表,原来的肯定不能用,所以要兼容
在这里插入图片描述
要把默认镜像的功能拿过来,还需再添加一个容器,名字要和下面的jnlp一致,这是插件去识别的

在这里插入图片描述

在这里插入图片描述
命令参数需要看原来的cmd

在这里插入图片描述

在这里插入图片描述
查看cmd
在这里插入图片描述
在这里插入图片描述
这里的参数是错的,参考上面的
在这里插入图片描述
自己做的容器需要跟docker交互,还需要挂载docker的socket文件

在这里插入图片描述
在这里插入图片描述
我们可以选择一个主机路径挂载
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
现在slave pod就替换了,对jenkinsfile做了调整
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这里就是指定容器列表的哪一个,只有tools容器才有docker命令

在这里插入图片描述
替换一下Jenkinsfile内容
在这里插入图片描述
在这里插入图片描述
把修改好的Jenkinsfile push 上去
在这里插入图片描述
在这里插入图片描述
现在pod里有2个容器,因为加了一个tool容器
在这里插入图片描述
在这里插入图片描述
现在容器里执行的命了
在这里插入图片描述
在这里插入图片描述
目前通过jenkinsfile加上slavepod、就可以把任务完成
在这里插入图片描述
回顾一下

在这里插入图片描述
在这里插入图片描述
默认调度的pod无法执行所需要的命令,所以我们制作镜像

在这里插入图片描述
把自己做的镜像集成到pod里,还需要把原来的jnlppod移植过来,否则无法连接上jenkins-master

在这里插入图片描述
把需要进容器执行的命令,指定容器包起来
在这里插入图片描述

第7章 Jenkins与Sonarqube集成实现代码质量管理

7.1 sonarqube架构介绍及安装

sonarqube是一个检测代码质量的工具
在这里插入图片描述
在这里插入图片描述
项目代码经过扫描器,扫描出来的结果发送到server端,可以在dashboard上看到结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
yaml文件放到jenkins目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
如果一直起不来,可以选择把监控检查去掉,检测时间可能有点短
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
添加一下解析
在这里插入图片描述
先停一下,创建数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在正在启动
在这里插入图片描述
默认初始化admin admin
在这里插入图片描述
在这里插入图片描述

7.2 使用scanner进行sonarqube扫描

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在项目跟目录下准备配置文件

在这里插入图片描述
代表源代码比如myblog里的所有都需要扫描
在这里插入图片描述
新建一个配置文件

在这里插入图片描述
先不push。在项目里创建,试试服务器上测试
在这里插入图片描述

在这里插入图片描述
现在要把scanner链接哪个sonar服务器地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置本地hosts文件
在这里插入图片描述
在这里插入图片描述
现在可以执行扫描,在python-demo的路径下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
-X有debug输出
在这里插入图片描述
在下载一些规格文件
在这里插入图片描述
在这里插入图片描述
下载失败的话,多尝试几次

正在扫描文件了

在这里插入图片描述
生成的task文件,可以看到一些检验的信息
在这里插入图片描述
在这里插入图片描述
多了一个项目

在这里插入图片描述
可以看到出问题的地方
在这里插入图片描述
在项目里配置project配置扫描文件,然后再scanner篇日志scanner服务端地址

在这里插入图片描述
为了解析sonar,可以在coredns加上解析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改coredns,这样启动的pod就有dns
在这里插入图片描述
在这里插入图片描述

7.3 sonar-scanner与tools集成

tools拉取代码后, 应该可以直接在tools容器里做扫描
在这里插入图片描述
jre其实就是java的运行环境,tools容器里已经有java环境了。所以没必要把jre包拷贝过去,但是需要让scanner指定java环境
在这里插入图片描述
在这里插入图片描述
这里默认去找自带的jre,所以需要改成false

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把sonar的scanner拷贝过去

在这里插入图片描述
把自带默认的jre删除
在这里插入图片描述
确认配置文件没有问题

在这里插入图片描述
在这里插入图片描述
改成false,不读取自带的jre

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
修改Dockerfile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先进容器试试java环境是否有问题

在这里插入图片描述
推送到仓库里

在这里插入图片描述
在这里插入图片描述
把jenkins的容器模板列表换成v2版本
在这里插入图片描述

7.4 Jenkins集成sonarqube

sonar的质量门就是去设置一些阀值,metric就是指标。设置了几个指标
在这里插入图片描述
新代码覆盖率少于80%
在这里插入图片描述

c重复行数
在这里插入图片描述
可以自己选择copy一个,加更多的指标
在这里插入图片描述
还可以关联哪个项目做检测

在这里插入图片描述
想要做流水线的时候知道是否通过sonar扫描,就需要安装插件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一般关注bug数和覆盖率,还有严格一点的code smell

在这里插入图片描述
可以直接写服务发现的地址

在这里插入图片描述

添加一个token,链接sonar使用。在sonar里生成token
在这里插入图片描述
在这里插入图片描述
在jenkins里添加凭据,类型为secret text
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

7.5 实践:Jenkinsfile集成sonarqube

查看官方给的sonar集成jenkinsfile的例子
在这里插入图片描述
在这里插入图片描述
这里的sonar名字要和jenkins配置的sonar名字一致

在这里插入图片描述
不成功就直接把流水线中止了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这里加了一个CI

在这里插入图片描述
parallel是一个并行的意思
在这里插入图片描述
在CI里这两个任务可以并行去做,单元测试和代码扫描

在这里插入图片描述
这两个值要写的一样,否则取不到,如果sonar验证不OK,回去中断整个流水线
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
jenkinsfile 集成sonarqube 提交
在这里插入图片描述
现在就自动在执行了,有一个并行的
在这里插入图片描述
这里的图标可以跳转到sonar
在这里插入图片描述
地址是在下面配置的
在这里插入图片描述
在这里插入图片描述
镜像tag是git的commit
在这里插入图片描述
在这里插入图片描述

第8章 集成RobotFramework实现自动化验收测试

8.1 RobotFramework介绍及验收用例编写

基于python语法来验收测试开发的自动化框架
在这里插入图片描述
在这里插入图片描述
这里是pod网络地址,再容器里可以访问通
在这里插入图片描述

除了api的测试还有url的测试

在这里插入图片描述
这里可以用无头浏览器测试url
在这里插入图片描述
在这里插入图片描述

8.2 实践:robot环境安装及测试用例执行

在master上去启动容器
在这里插入图片描述
要先装一下浏览器,一个是驱动,一个是浏览器,版本需要一致,否则会出问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装python依赖
在这里插入图片描述
现在就有robot命令去执行测试用例

在这里插入图片描述
在这里插入图片描述
由于是临时起的容器,无法解析,直接修改成能访问的ip就行
在这里插入图片描述
在robot里把访问地址改一下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把上面的文件拷贝到本地查看
在这里插入图片描述
在这里插入图片描述
log是详细记录页面

在这里插入图片描述
上面是手动的方式在跑robot用例

8.3 RF与tools工具镜像集成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
制作dockerfile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

需要更新jenkins里的kubernetes中的container-template

在这里插入图片描述

8.4 实践:Jenkinsfile集成RF实现自动化验收测试

现在可以直接调用容器里的robot命令做测试,集成测试的output.xml记录了本次集成测试的结果,jenkins集成robot插件可以分析这次结果,还可以分析这个阀值告诉jenkinsfile执行状态
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
-i就是指定tags,筛选出哪里有tag这样的用例

在这里插入图片描述
这一段都是robotframework的设置
在这里插入图片描述
会到这个目录里找这个文件

在这里插入图片描述
通过这两个阀值,达到80%就是成功,80-20就是不稳定,20是失败,等于jenkins构建的颜色,蓝色,红色。橘色

在这里插入图片描述
告诉jenkins把这次构建测试的收集进来当成一个制品来展示
在这里插入图片描述
安装插件
在这里插入图片描述
通过jenkinsfile来集成demo项目的验收测试
在这里插入图片描述
这边的注释是斜杠

在这里插入图片描述

跟之前的变化部分在这里
在这里插入图片描述
等podrunning的时候,才去做测试

在这里插入图片描述
提交jenkinsfile的修改

在这里插入图片描述在这里插入图片描述
jenkins任务里手动申明的就是制品

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
报错了,文件头可能错误,后面到容器里试了一下其实是sonar的域名解析不了,需要修改coredns

在这里插入图片描述
模拟一下项目启动,还是像之前那样docker run,克隆代码
在这里插入图片描述
在这里插入图片描述
develop分支有sonnar的【配置文件

在这里插入图片描述
之前是因为pod访问sonnar地址解析不了,配置一下coredns

在这里插入图片描述
在这里插入图片描述
试试生效没有

在这里插入图片描述
再去试一下

在这里插入图片描述
在这里插入图片描述
结果是一个失败
在这里插入图片描述
robot.txt没提交过去在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为这里打了OK,所以忽略了错误

在这里插入图片描述
吧robot.txt提交一下

在这里插入图片描述
在这里插入图片描述
可以看到制品

在这里插入图片描述
可以看到集成测试结果

在这里插入图片描述
在这里插入图片描述

第9章 小结

9.1 本章小结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值