Gitlab+Jenkins+SonarQube实现代码质量扫描自动化 | 您所在的位置:网站首页 › gitlab代码扫描 › Gitlab+Jenkins+SonarQube实现代码质量扫描自动化 |
背景
按照安全基线的要求,需要对上线前的代码进行扫描。 此前,测试已经搭建过一个扫描服务,sonarqube。 流程定义大致的流程如下: 开发提交代码在 Gitlab 上提交MRJenkins 接收到创建MR的通知,检查是否符合规则若符合规则,则执行扫描扫描结束后,执行 Python 脚本,获取扫描状态根据扫描结果,设置临时环境变量评论MR 基础环境 GitLabJenkinsSonarqube Sonarqube配置 安装多分支扩展(开发版路过)传送门 生成访问令牌配置路径:我的账号 → 安全 → 令牌 TIPS:生成的令牌要记下来,划走就再也找不到了。 Jenkins配置 安装 SonarQube Scanner for Jenkins 扩展路径:Manage Jenkins → Manage Plugins → Available(Tab) 配置 SonarQube Scanner for Jenkins 扩展路径:Manage Jenkins → Global Tool Configuration → SonarQube Scanner → Add SonarQube Scanner → Apply 路径:Manage Jenkins → Configure System → SonarQube servers → Add SonarQube → Apply 凭据选项配置路径:Manage Jenkins → 凭据配置 → Restrictions → Add → 包括 → Apply 配置凭据配置 Gitlab 用户,用于拉取代码 路径:Manage Jenkins → Manage Credentials → Add Credentials → OK 配置 SonarQube token 路径:Manage Jenkins → Manage Credentials → Add Credentials → OK 创建新项目路径:New Item → Freestyle project 配置项目路径:项目 → Configure → Apply 1、配置 Git 仓库,指定哪个分支被扫描 2、配置触发器,指定什么时候触发构建 同时,指定需要过滤的分支 生成 Token,后续在 Gitlab Webhook 会用 3、指定 SonarQube 的 token 4、指定构建时需要做的事情 ① Execute SonarQube Scanner — 配置扫描器做的事 sonar.projectKey=sonarcrmweb sonar.projectName=sonarcrmweb sonar.projectVersion=1.0 sonar.language=php sonar.sourceEncoding=UTF-8 sonar.branch.name=${GIT_BRANCH}② Execute Python script — 调用 SonarQube 的 API 获取执行结果 #!/usr/bin/python # -*- coding: UTF-8 -*- import requests import json import sys import os import base64 try: token = str(base64.b64encode('60c7dfb44f5e0f08c539e16a58421979f975606a:'.encode('utf-8'))) r = requests.get('http://192.168.35.124:9000/api/qualitygates/project_status?projectKey=sonarcrmweb&branch=' + os.environ['GIT_BRANCH'], headers={'Authorization': 'Basic ' + token}) print r.text sonarStatus = json.loads(r.text.decode('utf-8'))['projectStatus']['status'] sonarResult = 'Sonar analysis status is ' + sonarStatus except Exception as e: print e sonarResult = str(e) pass print sonarResult with open('pyresult.txt', 'w') as f: f.write('ANALYSIS_RESULT=' + sonarResult)③ Conditional step (single) — 用于设置 Python 脚本获取的执行结果到临时环境变量 5、配置构建完成时的动作,给 MR 写备注 Gitlab配置 配置 Access Tokens路径:setting → Access Tokens 记住这里的 token,需要回到 Jenkins 配置 Gitlab相关。 配置 WebHook Jenkins 配置 Gitlab 配置凭据配置 Gitlab API Token,用于提交评论 路径:Manage Jenkins → Manage Credentials → Add Credentials → OK 添加 Gitlab 配置路径:Manage Jenkins → Configure System → Gitlab → Add → Apply 最后折腾… |
CopyRight 2018-2019 实验室设备网 版权所有 |