Jenkins代码质量检测
代码质量检测官方网站:http://www.sonarqube.org/
SonarQube是一个用于代码质量管理的开放平台,通过插件机制,SonarQube可以集成不同的测试工具,代码分析工具,以及持续集成工具,例如 Hudson/Jenkins 等。
下载地址:https://www.sonarqube.org/downloads/
七个维度检测代码质量复杂度分布:代码复杂度过高将难以理解
重复代码:程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar 可以展示源码中重复严重的地方
单元测试统计:统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
代码规则检查:检查代码是否符合规范
注释率:若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读潜在的Bug:检测潜在的 bug
结构与设计:找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度
sonar-sever端配置配置java环境
1234root@slave-1:~# lsjdk-8u212-linux-x64.tar.gzroot@slave-1:~# tar xf jdk-8u ...
Jenkins给脚本传递参数
使用选项参数传递参数新建一个任务
编写脚本
123456789101112131415161718root@master:~# vim test.sh#!/bin/bashecho $1echo $2echo $3echo "------------------->"if [ $1 == "GROUP1" ];then IP_LIST="192.168.27.31"elif [ $1 == "GROUP2" ];then IP_LIST="192.168.27.32"elif [ $1 == "GROUPALL" ];then IP_LIST="192.168.27.32 192.168.27.31"fifor node_ip in ${IP_LIST};do echo ${node_ip},"--------->" ...
Jenkins视图
视图可用于归档 job 进行分组显示,比如将一个业务的视图放在一个视图显示
pipeline视图pipeline视图需要安装build pipeline插件
创建视图
列表视图列表视图使用场景比较多,用于将一个业务的job保存至一个列表视图进行分类管理,即不同业务的job放在不同的列表视图中。
最终job1的视图中有2个任务
Jenkins构建后关联操作
jenkins可以在执行构建后再进行执行相关联的操作,比如发邮件通知、构建下一个任务等等
配置方法
以下为构建后再构建其他工程为例
再次执行构建任务时,当第一个任务执行完毕后会自动执行相关联的第二个任务,一般在一个大服务中使用,将每个小服务分离开,当第一个服务配置完毕后自动触发下一个服务(酌情使用)。
Jenkins分布式部署
单台的job数量是有上线的,单台jenkins执行几十上百速度就会慢,此时就会部署一个Master多个node节点,master上配置多个任务,nodes上去执行各个任务,或者让测试环境的job执行在测试的node节点上,生产的job执行在生产的node上及那个其分离开。
node节点在执行job时会先去gitlab上拉取代码,对其进行编译,编译完成打包后向后端web服务器去部署,master不再执行操作,只用来分配各种job。
分布式Jenkins配置方式jenkins配置分布式前提条件
1.确保slave的时间必须要和master的时间相同
2.slave上的java环境需要和master上相同
环境准备
hostname
ip
os
master
192.168.27.12
ubuntu 18.04.2
slave-1
192.168.27.13
ubuntu 18.04.2
slave-2
192.168.27.14
ubuntu 18.04.2
在所有的服务器上进行时间同步
1ntpdate 172.20.0.1
配置2台slave的java环境配置j ...
Jenkins的pipline
pipline简介官方介绍;https://jenkins.io/2.0/
pipline是帮助Jenkins实现CI到CD转变的重要角色,是运行在jenkins2.X版本的核心插件,简单来说Pipline就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程,从而实现单个任务很难实现的复杂流程编排和任务可视化,pipline的实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本。
pipline语法Stage:阶段,一个pipline可以划分为若干个stage,每个stage都是一个操作,比如clone代码、代码编译、代码测试和代码部署,阶段是一个逻辑分组,可以跨多个node执行。
Node:节点,每个node都是一个jenkins节点,可以是jenkin smaster也可以是jenkins agent,node是执行step的具体服务器。
Step:步骤,step是jenkinspipline最基本的操作单元,从在服务器创建目录到构建容器镜像,由各类Jenkins插件提供实现,例如 ...
Jenkins构建触发器
当gitlab上代码发生变更时,jenkins自动将代码部署到服务器上,常用于测试环境
实现方法在gitlab上创建一个新的开发分支
在jenkins上安装插件
插件安装完毕后需要对jenkins的配置做一些更改:
1.允许登录用户可以做任何事情
2.关闭跨站伪造保护
新建一个开发分支的任务
生成一个token值
12root@jenkins:~# openssl rand -hex 122d6f3d9475277d20545a4182
填入token值
测试访问连接
12#jenkins的地址、job和token拼出的连接,一旦访问此连接将触发构建root@jenkins:~# curl 192.168.27.12:8080/job/mylinu_develop/build?token=2d6f3d9475277d20545a4182
url测试通过后将其写入gitlab
在Jenkins上修改构建的脚本
测试对开发分克隆
123456789root@gitlab:~# git clone -b develop http://192.168.27.11/ ...
Jenkins+Gitlab实现代码自动部署
环境准备
Hostname
Server
IP
OS
gitlab
Gitlab
192.168.27.11
ubuntu 18.04.2
jenkins
Jenkins
192.168.27.12
ubuntu 18.04.2
haproxy-1
haproxy
192.168.27.21
ubuntu 18.04.2
haproxy-2
haproxy
192.168.27.22
ubuntu 18.04.2
tomcat-1
tomcat
192.168.27.31
ubuntu 18.04.2
tomcat-2
tomcat
192.168.27.32
ubuntu 18.04.2
安装jdk环境分别在jenkins、tomcat-1、tomcat-2主机上安装jdk环境
oracle官网下载jdk,上传到本地服务器
12root@jenkins:~# lsjdk-8u212-linux-x64.tar.gz
解压jdk到/usr/local/src目录下,做一个软连接
12tar xf jdk-8u212-linux-x64.tar.gz ...
GitLab数据备份和恢复
gitlab的数据目录在/var/opt/gitlab目录下
1234567891011121314151617181920212223242526root@mylinuxops:~# ll /var/opt/gitlab/total 96drwxr-xr-x 20 root root 4096 Jul 18 11:48 ./drwxr-xr-x 3 root root 4096 Jul 18 11:46 ../drwxr-x--- 3 gitlab-prometheus root 4096 Jul 18 11:48 alertmanager/drwx------ 2 git root 4096 Jul 18 11:46 backups/-rw------- 1 root root 38 Jul 18 11:48 bootstrappeddrwxr-xr-x 2 git git ...
Git常用命令
git基本使用1.克隆
123456root@mylinuxops:~# git clone git@192.168.27.11:mylinuxops/web1.gitCloning into 'web1'...remote: Enumerating objects: 3, done.remote: Counting objects: 100% (3/3), done.remote: Total 3 (delta 0), reused 0 (delta 0)Receiving objects: 100% (3/3), done.
2.提交
12345678910111213141516171819202122232425262728293031323334353637383940#对代码做更改root@mylinuxops:~# echo "welcome to mylinuxops.com V2" >> web1/index.html #提交代码root@mylinuxops:~/web1# git add index.ht ...