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以上的版本