mysql
1 | apiVersion: apps/v1beta1 |
iwhereearth
1 | apiVersion: apps/v1beta1 |
iwherelink
1 | #apiVersion: v1 |
iwherevisual
1 | apiVersion: v1 |
洞见
1 | #apiVersion: v1 |
笔记
1 | apiVersion: apps/v1beta1 |
1 | apiVersion: apps/v1beta1 |
1 | #apiVersion: v1 |
1 | apiVersion: v1 |
1 | #apiVersion: v1 |
安装如下: /usr/local/
配置环境变量:vim /etc/profile
下载http://mirrors.jenkins.io/war-stable/2.138.4/
Jenkins 2.138.4版本,较高的版本汉化不完全,中英文混合
1 | vim tomcat/webapps/Root/index.html |
1 | <html> |
修改tomcat配置文件server.xml,修改8080为80
启动tomcat,安装jenkins
除了安装推荐插件外,需要额外安装如下插件Maven Integration plugin
//maven构建插件aCoCo plugin
//展示界面SonarQube Scanner for Jenkins
//sonarqube集成插件SSH Slaves plugin
//ssH 传输文件及命令插件Dingding[钉钉] Plugin
//钉钉通知NodeJS Plugin
//node构建插件Cppcheck Plug-in
//收集项目的Cppcheck分析结果Python Plugin
//支持python脚本Python Wrapper Plugin
解压缩版mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
1 | shell> groupadd mysql |
创建sonar数据库,创建本地用户,用户名密码 sonar/sonar,赋予管理权限。
conf/sonar.properties
配置数据库连接信息conf/wrapper.conf
指定java执行文件的路径,避免开启启动检测不到java环境变量造成启动失败
1 | vim sonar.properties |
1 | #添加如下内容 |
安装Cppcheck工具
下载:https://sourceforge.net/projects/cppcheck/files/cppcheck/
设置本地sonar 名字,URL地址,连接到sonar的token地址,token在sonar上面创建。
登陆sonar,点击登陆账号-我的账号-安全
设置Jenkins URL
添加远端服务器,设置连接凭证及地址
使用自动安装,安装到jenkins主目录tools下
使用本地安装的版本
使用自动安装的版本
在jenkins服务器执行如下操作
1 | $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 |
1 | pip install requests |
脚本内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import requests,json,jenkins,os,time
# 接受jenkins当前JOB_NAME参数
projectName = os.getenv("JOB_NAME")
def sendding(Dingtalk_access_token,content,title,messageUrl):
url = Dingtalk_access_token
pagrem = {
"msgtype": "link",
"link": {
'title':title,
"text": content,
'picUrl': messageUrl,
'messageUrl':'http://192.168.0.243:9000/dashboard?id='+ projectName
}
}
headers = {
'Content-Type': 'application/json',
}
# 发送消息
requests.post(url, data=json.dumps(pagrem), headers=headers)
def notification():
# 钉钉hook地址
Dingtalk_access_token = 'https://oapi.dingtalk.com/robot/send?access_token=10c79fc688ed7679ced8ac600c4357f23c339e03da838c9dea10181b939b5e1c'
# sonar API
sonar_Url = 'http://192.168.0.243:9000/api/measures/search?projectKeys='+ projectName +'&metricKeys=alert_status%2Cbugs%2Creliability_rating%2Cvulnerabilities%2Csecurity_rating%2Ccode_smells%2Csqale_rating%2Cduplicated_lines_density%2Ccoverage%2Cncloc%2Cncloc_language_distribution'
# 获取sonar指定项目结果,请求带认证
resopnse = requests.get(sonar_Url,auth=('root','zhjx_1058')).text
# 转换成josn
result = json.loads(resopnse)
bug = 0
leak = 0
code_smell = 0
coverage = 0
density = 0
status = ''
statusStr = ''
# 解析sonar json结果
for item in result['measures']:
if item['metric']=="bugs":
bug = item['value']
elif item['metric']=="vulnerabilities":
leak = item['value']
elif item['metric']=='code_smells':
code_smell = item['value']
elif item['metric']=='coverage':
coverage = item['value']
elif item['metric']=='duplicated_lines_density':
density = item['value']
elif item['metric']=='alert_status':
status = item['value']
else:
pass
# 判断新代码质量阀状态
if status == 'ERROR':
# 错误图片
messageUrl = 'http://www.iconsdb.com/icons/preview/soylent-red/x-mark-3-xxl.png'
statusStr = '失败'
elif status == 'OK':
statusStr = '成功'
# 正确图片
messageUrl = 'http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png'
# 消息内容。如果太长只会部分展示
code_reslut= "Bug数:" + bug + "个," + \
"漏洞数:" + leak + "个," + \
"可能存在问题代码:"+ code_smell + "行," + \
"覆盖率:" + coverage + "%," + \
"重复率:" + density + "%"
print("静态代码扫描统计:"+"状态:"+ status +","+code_reslut)
# 连接jenkins
server=jenkins.Jenkins(url="http://192.168.0.243:8080/jenkins/",username='root',password="zhjx_1058")
# 获取指定项目最后编译number
get_number = server.get_job_info(projectName)['lastBuild']['number']
print("BUILD_NUMBER:"+ str(get_number))
sendding(Dingtalk_access_token, content=code_reslut, title=projectName+"#"+str(get_number)+"新代码扫描" + statusStr,messageUrl=messageUrl)
if __name__=="__main__":
# 等待10秒,确保SonarQube刷新结果
time.sleep(10)
notification()
配置环境变量
1 | # jmeter |
测试是否安装成功
HTML Publisher plugin
//此插件发布HTML报告Performance Plugin
//此插件允许根据从流行的测试工具(Apache JMeter、JUnit、金牛座)读取的结果跟踪性能 KPI
1 | # 删除jmeter结果文件 |
Jmeter 的命令参数如下,参数使用的格式如上:
在jenkins后使用html publisher查看html报告时,发现显示不全,很多东西显示不了。
在查看官方文档后,这原来是安全问题所导致的。
Jenkins安全默认是将以下功能都关闭了
1、javascript
2、html上的内置插件
3、内置css或从其它站的css
4、从其它站的图处
5、AJAX
我的网页使用的是css,所以显示不全。解决方法如下:
在jenkins系统管理中输入以下脚本运行:
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “”)
如下图:
再次查看,显示正确
注意:
此方法只适用于 HTML Publisher Plugin to version 1.10以上的版本