卷挂载的方式在Jenkins拉起的容器中运行sonar-scanner

Jenkins中使用 sonar-scanner进行质量分析是非常便捷的。但是从docker hub 拉取的镜像中,并没有安装 sonar-scanner

之前写过在 Jenkins 中安装 nodejs 和sonar-scanner,但是后来发现,当开发语言过多以后,在对其使用sonar-scanner 扫描时,需要安装对应语言的 编译环境,这样会导致Jenkins 镜像的体积会越来越大,并且没有重新build Jenkins镜像会很麻烦。所以采用将 sonar-scanner 采用卷挂载的方式使用,并在宿主机上拉起对应语言的编译镜像的容器,在这个容器内执行 sonar-scanner 命令。

下载sonar-scanner

下载sonar-scanner

修改 docker-compose.yml文件

version: '2'
services:
  jenkins:
    image: 10.34.28.103:32005/library/jenkins:2.164.3.2
    ports:
      - "32002:8080"
    dns: 8.8.8.8
    environment:
      - JENKINS_MODE=master
      - TZ=Asia/Shanghai
      - JENKINS_ADMIN_ID=root
      - JENKINS_ADMIN_PW=abcd1234
      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false
    volumes:
      - /home/local/jenkins/jenkins/:/data/jenkins
      - /home/local/dp20/sonar-scanner/:/data/sonar-scanner
    restart: "no"

启动Jenkins

执行命令

docker-compose -f docker-compose.yml -p demo up -d

进入到Jenkins 容器中

执行命令

docker exec -it 8eeb011adfa0 bash
  1. 执行sonar-scanner命令
/data/sonar-scanner/bin/sonar-scanner -v

报错

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

  1. 解决报错

按照 Jenkins镜像中安装nodejs和sonar-scanner提到的,这里需要让sonar-scanner 使用系统的jre

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

所以需要执行命令:

sed -i 's/use_embedded_jre=true/use_embedded_jre=false/g' /data/sonar-scanner/bin/sonar-scanner
  1. 然后在执行
/data/sonar-scanner/bin/sonar-scanner -v

完美执行

在这里插入图片描述

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

  1. 使用 Jenkins pipeline 拉起一个对应语言的编译构建镜像的容器

在这里插入图片描述

整体思路

拉起
卷挂载
执行
Jenkins
编译构建的镜像
sonar-scanner
sonar-scanner

优点

  1. 减小Jenkins容器的体积
  2. 不用每遇到一个新的扫描语言都要重新buildJenkins 镜像
  3. 方便 sonar-scanner 工具升级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值