Angular学习笔记71:使用Jenkins + SonarQube 扫描Angular项目

22 篇文章 0 订阅

使用Jenkins+SonarQube扫描Angular项目

准备环境

安装Docker & docker-compose

  1. 安装docker
    参见文章:在云服务器上安装docker

  2. 安装docker-compose
    参见文章:docker-compose的安装和设定

在这里不详细描述

Jenkins

  1. 使用 docker 拉去 Jenkins 的镜像:
docker pull 10.101.0.9:5000/jenkins:2.164.3
  1. docker-compose使用的yml文件

写一个docker-compose.yml 文件,通过 docker-compose 的方式启动 Jenkins

version: '2'

services:
  jenkins:
    image: 10.101.0.9:5000/jenkins:2.164.3
    ports:
      - "32003:8080"
    environment:
      - JENKINS_MODE=master
      - TZ=Asia/Shanghai
      - JENKINS_ADMIN_ID=root
      - JENKINS_ADMIN_PW=abcd1234
      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false
    volumes:
      - ./data/:/data/jenkins
      - /Users/wjy/WebstormProjects/demo-test:/data/jenkins/workspace/demo
    restart: "no"

在这里 volumes 中,将Jenkins的数据目录和需要扫描的代码目录进行挂载

执行命令:

docker-compose -f jenkins.yml -p dp21 up -d

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DIeyJXW1-1571729025713)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p211)]

等待启动完成以后,打开页面:http://localhost:32003 就会看到jenkins的页面了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFuIceuP-1571729025714)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p213)]

SonarQube

  1. 使用 docker 拉去 SonarQube 的镜像:
docker pull liumiaocn/sonarqube:7.0
  1. 启动 SonarQube
docker run --rm -d --name sonarqube \
    -p 9000:9000 -p 9092:9092 \
    liumiaocn/sonarqube:7.0

等待启动完成以后,打开页面:http://localhost:9000 就会看到 SonarQube 的页面了

配置Jenkins

  1. 配置Sonar-Scanner

登录以后->系统管理->全局工具配置,找到Sonar-Scanner的条目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UkaggiwJ-1571729025714)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p215)]

这里如果没有Sonar-Scanner的条目,请到系统管理->插件管理中,进行安装

  1. 添加连接 SonarQube 服务器的凭证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Plrqjfzn-1571729025715)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p216)]

创建Job

登录以后,点击页面的 “Please create new jobs to get started.” 开始创建Job

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zJXDZ1tv-1571729025715)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p217)]

创建以后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuh1lJWU-1571729025716)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p218)]

写 Pipeline script

import groovy.json.JsonSlurperClassic

node {
   def appName="demo"; def appVersionCode="1";
   sh "sleep 1"
  def appCodeSonarDirs = "/data/jenkins/workspace/demo";
  def appCodeSonarScannerDirs = "/data/jenkins/workspace/demo/src";
        stage('Review') {
           echo "-----New Stage Start-----"
           echo "Stage[Review] Start!"
           def result = 0;
           try {
            echo "Stage[Review] start!"
                def inventoryUrl = "http://192.168.3.3:9000"
                def sonarqubeScannerHome = tool name: 'Bundled', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
                withCredentials([usernamePassword(credentialsId: 'Sonar_DevOps_Default', usernameVariable: 'username', passwordVariable: 'password')]) {
                    sh "${sonarqubeScannerHome}/bin/sonar-scanner -X -Dsonar.host.url=${inventoryUrl} -Dsonar.login=admin -Dsonar.password=admin -Dsonar.projectName=${appName} -Dsonar.projectVersion=${appVersionCode} -Dsonar.projectKey=${appName} -Dsonar.sources=${appCodeSonarScannerDirs}"
                    }
              result = 2
           } catch (e) {
              result = -1
              echo "-----Stage End-----Result[-1]------"
              throw e
           } finally {
              echo "Stage[Review] End!"
           }
        }
}

***需要注意的是:jenkins 中不支持 localhost ***

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sQut1CwM-1571729025716)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p219)]

保存以后,开始构建

最终的扫描结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZXWMlJQ-1571729025717)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p222)]

相关问题连接:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值