篇三:创建流水线-1.SonarQube 集成到流水线

篇三:创建流水线-1.SonarQube 集成到流水线

​ 创建流水线,编辑Jenkinsfile,包含Checkout SCM、单元测试、SonarQube分析、构建并推送镜像、部署服务至Kubernetes集群等几个步骤。

1.1将 SonarQube 集成到流水线

官网: https://kubesphere.io/zh/docs/devops-user-guide/how-to-integrate/sonarqube/

SonarQube 是一种主流的代码质量持续检测工具。您可以将其用于代码库的静态和动态分析。SonarQube 集成到 KubeSphere 流水线后,如果在运行的流水线中检测到问题,您可以直接在仪表板上查看常见代码问题,例如 Bug 和漏洞。

前提:启用 KubeSphere DevOps 系统

1.1.1安装 SonarQube 服务器

要将 SonarQube 集成到您的流水线,必须先安装 SonarQube 服务器。

  1. 先安装 Helm,后续使用该工具安装 SonarQube。在镜像中以有helm的安装包,解压即用:

    #默认是安装上的,具体看环境
    tar -zxvf /opt/helm-v3.7.1-linux-amd64.tar.gz -C /opt
    cp /opt/linux-amd64/helm /usr/bin/
    

    查看 Helm 版本。

    $ helm version
    version.BuildInfo{Version:"v3.4.1", GitCommit:"c4e74854886b2efe3321e185578e6db9be0a6e29", GitTreeState:"clean", GoVersion:"go1.14.11"}
    

执行以下命令安装 SonarQube 服务器。

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

会获取以下提示内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r6t4CgOA-1680828386215)(image/image-20220625134203932.png)]

1.1.2获取 SonarQube 控制台地址

1.执行以下命令以获取 SonarQube NodePort。

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

#得到如下地址
http://10.18.4.10:31179

1.1.3配置 SonarQube 服务器

步骤 1:访问 SonarQube 控制台
  1. 执行以下命令查看 SonarQube 的状态。请注意,只有在 SonarQube 启动并运行后才能访问 SonarQube 控制台。

    $ kubectl get pod -n kubesphere-devops-system
    NAME                                       READY   STATUS    RESTARTS   AGE
    sonarqube-postgresql-0                     1/1     Running   0          5m31s
    sonarqube-sonarqube-bb595d88b-97594        1/1     Running   2          5m31s
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLcZCbAm-1680828386216)(image/image-20220625173350668.png)]

  2. 在浏览器中访问 SonarQube 控制台 http://10.18.4.10:31179

  3. 点击右上角的 Log in,然后使用默认帐户 admin/admin 登录,然后改个密码。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BuUX5xwY-1680828386217)(image/image-20220625173416481-16561496579293.png)]
    在这里插入图片描述在这里插入图片描述

步骤 2:创建 SonarQube 管理员令牌 (Token)

​ 1.点击右上角字母 A,然后从菜单中选择 My Account 以转到 Profile 页面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mIrvwekK-1680828386219)(image/image-20220625180044472.png)]

​ 2.点击 Security 并输入令牌名称,例如 kubesphere

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P6HOI59j-1680828386219)(image/image-20220625180214638.png)]

​ 3.点击 Generate 并复制此令牌。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C7zsQKHg-1680828386219)(image/image-20220625180312990.png)]

警告:如提示所示,无法再次查看此令牌,因此请确保复制成功。

Generate Tokens1f87a540d94733dda04516b80a36dedc1e724615

步骤3:创建Webhook服务器

​ 1.获取jenkins中的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/

#获取到如下地址
http://10.18.4.10:30180/sonarqube-webhook/

​ 2.依次点击 AdministrationConfigurationWebhooks 创建一个 Webhook。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AJDn51iZ-1680828386220)(image/image-20220625181333755.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKxpTEnw-1680828386220)(image/image-20220625181407003.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FdbWUTBe-1680828386222)(image/image-20220625181514624.png)]

步骤 4:将 SonarQube 配置添加到 ks-installer
  1. 执行以下命令编辑 ks-installer

    kubectl edit cc -n kubesphere-system ks-installer
    
  2. 搜寻至 devops。添加字段 sonarqube 并在其下方指定 externalSonarUrlexternalSonarToken

    devops:
      enabled: true
      jenkinsJavaOpts_MaxRAM: 2g
      jenkinsJavaOpts_Xms: 512m
      jenkinsJavaOpts_Xmx: 512m
      jenkinsMemoryLim: 2Gi
      jenkinsMemoryReq: 1500Mi
      jenkinsVolumeSize: 8Gi
      sonarqube: 								  	#Add this field manually.
        externalSonarUrl: http://10.18.4.10:31179 	#SonarQube IP 地址。
        externalSonarToken: 1f87a540d94733dda04516b80a36dedc1e724615 	#上面创建的SonarQube 管理员令牌。
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ti7DsF8C-1680828386222)(image/image-20220625190755511.png)]

  1. 完成操作后保存此文件。
步骤 5:将 SonarQube 服务器添加至 Jenkins
  1. 执行以下命令获取 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
    
    #如下为Jenkins的IP:端口
    http://10.18.4.10:30180
    
  2. 使用地址 http://10.18.4.10:30180 访问 Jenkins。安装 KubeSphere 时,默认情况下也会安装 Jenkins 仪表板。此外,Jenkins 还配置有 KubeSphere LDAP,可以直接使用 KubeSphere 帐户(例如 admin/设置的密码)登录 Jenkins。

  3. 点击左侧导航栏中的系统管理

  4. 向下翻页找到并点击系统配置

  5. 搜寻到 SonarQube servers,然后点击 Add SonarQube

  6. 输入 NameServer URL (http://10.18.4.10:31179/)。点击添加,选择 Jenkins,然后在弹出的对话框中用 SonarQube 管理员令牌创建凭证(如下方第二张截图所示)。创建凭证后,从 Server authentication token 旁边的下拉列表中选择该凭证。点击应用完成操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8mtXaIX-1680828386223)(image/image-20220625192212569.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4FvnKKX-1680828386223)(image/image-20220625192622546.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gpQ4q7gQ-1680828386223)(image/image-20220625192706741.png)]

    备注

    如果点击添加按钮无效(Jenkins 已知问题),可以在系统管理下的 Manage Credentials 并点击 Stores scoped to Jenkins 下的 Jenkins,再点击全局凭据 (unrestricted),然后点击左侧导航栏的添加凭据,参考上方第二张截图用 SonarQube 管理员令牌添加凭证。添加凭证后,从 Server authentication token 旁边的下拉列表中选择该凭证。

步骤 6:将 sonarqubeURL 添加到 KubeSphere 控制台

您需要指定 sonarqubeURL,以便可以直接从 KubeSphere 控制台访问 SonarQube。

  1. 执行以下命令:

    kubectl edit  cm -n kubesphere-system  ks-console-config
    
  2. 搜寻到 data.client.enableKubeConfig,在下方添加 devops 字段并指定 sonarqubeURL

    client:
      enableKubeConfig: true
      devops: 									# 手动添加该字段。
        sonarqubeURL: http://10.18.4.10:31179 # SonarQube IP 地址。
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zSN7xT7W-1680828386224)(image/image-20220625192934061.png)]

  3. 保存该文件。

步骤 7:重启服务

执行以下命令。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SZnAl6wo-1680828386224)(image/image-20220625193020851.png)]

1.1.4为新项目创建 SonarQube Token

需要一个 SonarQube 令牌,以便您的流水线可以在运行时与 SonarQube 通信。

  1. 在 SonarQube 控制台上,点击 Add a project
    在这里插入图片描述在这里插入图片描述

  2. 输入项目密钥,例如 springcloud,然后点击 Set Up。再输入项目名称,例如 springcloud,然后点击 Generate,创建令牌(SONAR_TOKEN)后,点击 Continue
    在这里插入图片描述[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K98gJhk8-1680828386226)(image/image-20220625193512887.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSfGsUOy-1680828386226)(image/image-20220625193643597.png)]

  3. 选择Maven。复制下图所示绿色框中的序列号,如果要在流水线中使用,则需要在凭证中添加此序列号。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HCEG3BXj-1680828386227)(image/image-20220625193911195.png)]

1.1.5为SonarQube添加凭证

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I9FKJzMM-1680828386228)(image/image-20220625194847200.png)]在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值