SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。 通过插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
SonarQube平台由4个组件组成:
一台SonarQube Server启动3个主要过程:
Web服务器,供开发人员,管理人员浏览高质量的快照并配置SonarQube实例
基于Elasticsearch的Search Server从UI进行后退搜索
Compute Engine服务器,负责处理代码分析报告并将其保存在SonarQube数据库中
一个SonarQube数据库要存储:
SonarQube实例的配置(安全性,插件设置等)
项目,视图等的质量快照。
服务器上安装了多个SonarQube插件,可能包括语言,SCM,集成,身份验证和管理插件
在构建/持续集成服务器上运行一个或多个SonarScanner,以分析项目
以下架构显示了SonarQube如何与其他ALM工具集成以及使用SonarQube的各种组件的位置。
开发人员在其IDE中进行编码,并使用SonarLint运行本地分析。
开发人员将他们的代码放入他们最喜欢的SCM中:git,SVN,TFVC等。
Continuous Integration Server会触发自动生成,并执行运行SonarQube分析所需的SonarScanner。
分析报告将发送到SonarQube服务器进行处理。
SonarQube Server处理分析报告结果并将其存储在SonarQube数据库中,并在UI中显示结果。
开发人员通过SonarQube UI审查,评论,挑战他们的问题,以管理和减少技术债务。
经理从分析中接收报告。Ops使用API自动执行配置并从SonarQube提取数据。运维人员使用JMX监视SonarQube Server。
SonarQube平台不能具有多个SonarQube服务器(尽管该服务器可以作为集群安装)和一个SonarQube数据库。
为了获得最佳性能,应将每个组件(服务器,数据库,扫描仪)安装在单独的计算机上,并且服务器计算机应专用。
SonarScanners通过添加机器进行扩展。
所有机器必须时间同步。
SonarQube服务器和SonarQube数据库必须位于同一网络中
SonarScanners不需要与SonarQube Server位于同一网络上。
有没有沟通之间SonarScanners和SonarQube数据库。
前提环境需要k8s集群和helm
helm pull stable/sonarqube
tar xvf sonarqube-3.2.7.tgz
vim sonarqube/values.yam
设置用户和密码
helm install sonarqube ./sonarqube #报错原因是我的集群是1.16版本了 Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"
grep -irl "extensions/v1beta1" sonarqube | grep deployment
grep -irl "extensions/v1beta1" sonarqube | grep deploy | xargs sed -i 's#extensions/v1beta1#apps/v1#g'
再次执行安装
helm install sonarqube ./sonarqube Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
grep -irl "apps/v1" sonarqube | grep deployment
依次修改以上文件。
vim sonarqube/templates/deployment.yaml
vim sonarqube/charts/postgresql/templates/deployment.yaml
vim sonarqube/charts/mysql/templates/deployment.yaml
再次执行安装
pod需要请求pv,这里使用hostpath
cat pv/pv1.yaml apiVersion: v1 kind: PersistentVolume metadata: name: sonarqube-pv1 spec: capacity: storage: 10Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: /helm/sonarqube/pv1
完美结束!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。