kubesphere 集成 sonar

文章目录

  • 安装 helm
  • 通过 helm 安装 sonar
  • 配置 SonarQube 服务器
    • 创建 SonarQube 管理员令牌
    • SonarQube 配置添加到 ks-installer
    • 创建 Webhook 服务器
    • 将 SonarQube 服务器添加至 Jenkins
    • 将 sonarqubeURL 添加到 KubeSphere 控制台
    • 重启服务
  • 为新项目创建 SonarQube Token

官方文档: 将 SonarQube 集成到流水线

安装 helm

先安装helm,可参考文章 CentOS7 安装 helm

通过 helm 安装 sonar

安装命令

helm upgrade --install sonarqube sonarqube --repo https://charts.kubesphere.io/main -n kubesphere-devops-system  --create-namespace --set service.type=NodePort

安装成功
在这里插入图片描述

查看 SonarQube 的状态

kubectl get pod -n kubesphere-devops-system

在这里插入图片描述

输出 sonar 访问地址

export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT

在这里插入图片描述

默认账号:admin
默认密码:admin

成功访问,ip:32525
在这里插入图片描述

 

配置 SonarQube 服务器

创建 SonarQube 管理员令牌

点击右上角字母 A,然后从菜单中选择 My Account 以转到 Profile 页面。
在这里插入图片描述

点击 Security 并输入令牌名称,例如 kubesphere
在这里插入图片描述

复制 token 并保存好

SonarQube 配置添加到 ks-installer

编辑 ks-installer,或在自定义资源中搜索 ClusterConfiguration,点击 ks-installer 右侧的按钮 ,选择编辑 YAML

kubectl edit cc -n kubesphere-system ks-installer
  • externalSonarUrl:sonar 的访问地址
  • externalSonarToken:上一步生成的 token
devops:enabled: truejenkinsJavaOpts_MaxRAM: 2gjenkinsJavaOpts_Xms: 512mjenkinsJavaOpts_Xmx: 512mjenkinsMemoryLim: 2GijenkinsMemoryReq: 1500MijenkinsVolumeSize: 8Gisonarqube: # Add this field manually.externalSonarUrl: http://10.xx.xx.xx:32525externalSonarToken: xxxxxx

检查安装过程

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

创建 Webhook 服务器

获取 SonarQube Webhook 的地址。

export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT/sonarqube-webhook/

在这里插入图片描述

依次点击 Administration、Configuration 和 Webhooks 创建一个 Webhook
在这里插入图片描述

新建
在这里插入图片描述

  • name:自定义
  • url:上面获取的 Webhook

在这里插入图片描述

将 SonarQube 服务器添加至 Jenkins

获取 Jenkins 的地址

export NODE_PORT=$(kubectl get --namespace kubesphere-devops-system -o jsonpath="{.spec.ports[0].nodePort}" services devops-jenkins)
export NODE_IP=$(kubectl get nodes --namespace kubesphere-devops-system -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT

在这里插入图片描述
默认账号:admin
默认密码:P@88w0rd

如果报错

WARNING o.s.c.s.ResourceBundleMessageSource#getResourceBundle: ResourceBundle [org.acegisecurity.messages] not found for MessageSource: Can’t find bundle for base name org.acegisecurity.messages, locale en
WARNING o.a.p.l.a.BindAuthenticator2#handleBindException: Failed to bind to LDAP: userDnuid=admin,ou=Users,dc=kubesphere,dc=io username=admin
javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]

可以修改密码,参考文章 KubeSphere3.0我在部署devops服务之后,jenkins无法使用ldap账号登录

kubectl patch users admin -p '{"spec":{"password":"Admin123456"}}' --type='merge' && kubectl annotate users admin iam.kubesphere.io/password-encrypted-

系统管理 - Manage Credentials - Jenkins - 全局凭据
在这里插入图片描述

在这里插入图片描述

Secret text - 全局 - 上面创建的 token
在这里插入图片描述

点击 系统管理 - 系统配置 - SonarQube servers - Add SonarQube - 选择sonarqube

在这里插入图片描述

将 sonarqubeURL 添加到 KubeSphere 控制台

编辑 config

kubectl edit  cm -n kubesphere-system  ks-console-config

搜寻到 data.client.enableKubeConfig,在下方添加 devops 字段并指定 sonarqubeURL。
在这里插入图片描述

重启服务

kubectl -n kubesphere-devops-system rollout restart deploy devops-apiserver
kubectl -n kubesphere-system rollout restart deploy ks-console

为新项目创建 SonarQube Token

创建项目
在这里插入图片描述
创建 token
在这里插入图片描述

得到 mvn 发布命令
在这里插入图片描述

执行命令
在这里插入图片描述

成功发布到 sonar

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/42841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Threejs学习04——球缓冲几何体环境光以及直线光源

实现随机多个三角形随机位置随机颜色展示效果 这是一个非常简单基础的threejs的学习应用!本节主要学习的是球面缓冲几何体在环境光合直线光源下的效果,可以学习到环境光和直线光源的生成效果等功能!主要使用的是球缓冲几何体对象SphereGeome…

使用el-tree实现自定义树结构样式

实现效果: 直接上代码: <template><div><div class"tops"><el-tree :default-expanded-keys"[1]" ref"myTree" :data"data" :props"defaultProps" node-click"handleNodeClick" highlight…

【uniapp】picker mode=“region“ 最简单的省市区 三级联动

省市区 picker template <picker mode"region" :value"date" class"u-w-440" change"bindTimeChange"><u--inputborder"bottom"class"u-fb u-f-s-28"placeholder"请选择省市区"type"te…

第8章 对同步的硬件支持 摘录

为了保证并行程序执行的正确性和高效性&#xff0c;构建一个共享存储多处理器系统的硬件必须要解决缓存一致性、存储一致性和同步原语的支持等问题。 被广泛使用的同步原语包括锁lock、栅栏barrier和点对点同步(signal和wait信号量)。举例来说&#xff0c;锁和栅栏被大量使用在…

ARM 作业1

一、思维导图 二、 1. 2. .text 文本段 .globl _start 声明_start:mov r0,#0mov r1,#0fun:cmp r1,#100bhi stopadd r0,r0,r1add r1,r1,#1b fun stop:b stop .end

C++函数模板和类模板

C另一种编程思想称为泛型编程&#xff0c;主要利用的技术是模板 C提供两种模板机制&#xff1a;函数模板和类模板 C提供了模板(template)编程的概念。所谓模板&#xff0c;实际上是建立一个通用函数或类&#xff0c; 其类内部的类型和函数的形参类型不具体指定&#xff0c; 用…

Axios使用CancelToken取消重复请求

处理重复请求&#xff1a;没有响应完成的请求&#xff0c;再去请求一个相同的请求&#xff0c;会把之前的请求取消掉 新增一个cancelRequest.js文件 import axios from "axios" const cancelTokens {}export const addPending (config) > {const requestKey …

如何区分闰年与平年

首先要明白 地球绕太阳运行周期为365天5小时48分46秒&#xff08;合365.24219天&#xff09;&#xff0c;即一回归年&#xff08;tropical year&#xff09;。公历的平年只有365日&#xff0c;比回归年短约0.2422 日&#xff0c;每四年累积约一天&#xff0c;把这一天加于2月末…

Docker安装基础使用练习

目录 1、安装Docker-CE 1&#xff09;简单使用yum方式安装 ! 2&#xff09;配置镜像加速&#xff1a; 2、下载系统镜像&#xff08;Ubuntu、 centos&#xff09; 1&#xff09;先查看我们所需的镜像有哪些版本。使用search命令&#xff01; 2&#xff09;下载镜像使用的是pul…

【爬虫】P1 对目标网站的背景调研(robot.txt,advanced_search,builtwith,whois)

对目标网站的背景调研 检查 robot.txt估算网站大小识别网站所用技术寻找网站的所有者 检查 robot.txt 目的&#xff1a; 大多数的网站都会包含 robot.txt 文件。该文件用于指出使用爬虫爬取网站时有哪些限制。而我们通过读 robot.txt 文件&#xff0c;亦可以最小化爬虫被封禁的…

vue中实现文字检索时候将搜索内容标红

实现结果 html&#xff1a; <div class"searchBox"><span class"bt">标&#8195&#8195题</span><div class"search"><div class"shuru"><!-- <span class"title">生产经营<…

[leetcode] 707 设计链表

707. 设L计链表 中等 902 相关企业 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向链表&#xff0c;则还需…

如何批量修改图片名为不同名称

如何批量修改图片名为不同名称&#xff1f;当今社会&#xff0c;因为人们都养成了随手拍照的习惯&#xff0c;所以拥有上千上万张照片的相册已经司空见惯不足为奇。然而&#xff0c;我们在保存这些照片时往往都会碰到一个大难题——电脑中的图片名称千奇百怪&#xff0c;让整个…

C++并发多线程--std::async、std::packaged_task和std::promise的使用

目录 1--std::async的使用 2--std::packaged_task的使用 3--std::promise的使用 1--std::async的使用 std::async用于启动一个异步任务&#xff0c;并返回一个std::future对象&#xff1b;std::future对象里含有异步任务线程入口函数的结果&#xff1b; std::launch::deferr…

完美解决微信小程序使用复选框van-checkbox无法选中

由于小程序使用了vant-ui框架&#xff0c;导致checkbox点击无法选中问题 <van-checkbox value"{{ checked }}" shape"square"><view class"check-content"><view class"checktext">我已阅读并同意>《用户协议》…

opencv-目标追踪

import argparse import time import cv2 import numpy as np# 配置参数 ap argparse.ArgumentParser() ap.add_argument("-v", "--video", typestr,help"path to input video file") ap.add_argument("-t", "--tracker", …

第1天----验证一个字符串是否是另一个字符串的子串

本文我们将学习如何去验证一个字符串是否是另一个字符串的子串。 一、小试牛刀&#xff1a; 题目描述 输入两个字符串&#xff0c;验证其中一个串是否为另一个串的子串。 输入格式 两行&#xff0c;每行一个字符串。 输出格式 若第一个串 s 1 是第二个串 s 2 的子串&#xff0c…

java Spring Boot properties多环境配置拆分文件管理

上文 java Spring Boot yml多环境拆分文件管理优化 我们用yml 做了一个多环境配置文件的拆分管理 我们将 application.yml 改为 application.properties 参考代码如下 spring.profiles.activedev我们知道 yml 是用 : 来区分高低基本 而 properties是直接通过 . 来表达 其他基本…

使用svd 分解的方法对神经网络模型进行压缩(能不能压缩要看秩的大小)

参考和理论 压缩原理代码 import torch import numpy as np torch.manual_seed(0)# ------------------------------------ # n:输入数据维度 # m:输出数据维度 # ------------------------------------ n = 12 m = 10# ------------------------------------ # 随机初始化权…

树形组件浅知

别人写好的轮子&#xff0c;会用即可 首先&#xff0c;需要安装依赖&#xff0c;npm install --save riophae/vue-treeselect 如果使用npm 不行 那么就使用 yarn add --save riophae/vue-treeselect 然后在使用的地方引入即可 // import the componentimport Treeselect from…