容器化部署Sonarque部署

目前的架构

  • 先部署Docker
  • 容器化部署Jenkins
  • 容器化部署sonarqube

一、部署docker这步骤省略,直接参考官方文档,或者参考之前文章

https://www.cnblogs.com/bangbangzoutianya/p/15644934.html

二、容器化部署Jenkins,参考之前文章

https://www.cnblogs.com/bangbangzoutianya/p/16734000.html

docker run --name my_jenkins -p 8080:8080 -p 50000:50000 -d  --env JAVA_OPTS=-Duser.timezone=Asia/Shanghai -v /usr/local/my_jenkins/:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --privileged=true --restart=always jenkins/jenkins

三、容器化部署sonarqube,参考官方文档

https://docs.sonarqube.org/latest/setup-and-upgrade/install-the-server/
image

docker volume create --name sonarqube_data
docker volume create --name sonarqube_logs
docker volume create --name sonarqube_extensions
#运行容器
docker run --name my_sonarqube -d \
    -p 9000:9000 \
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    --restart=always sonarqube

四、这里使用的宿主机的.net sdk

#在宿主机上安装dotnet-sonarscanner
dotnet tool install --global dotnet-sonarscanner

五、设置环境变量

#配置环境变量
vim /etc/profile
export PATH=/home/XX/.sonarqube/bin:$PATH
export PATH=/home/XX/.dotnet/tools/.store/dotnet-sonarscanner/5.11.0:$PATH

#使得配置文件生效
source /etc/profile

六、安装JDK ,这里安装JDK11,安装参考

https://www.cnblogs.com/bangbangzoutianya/p/17198864.html

七、编写一个shell脚本,到时候Jenkins远程到该宿主机进行执行该脚本

#ProjectName =》替换成自己的的扫描项目
#sonar.host.url 替换成自己的sonarqube地址
#sonar.verbose=true 可以查看扫描时的详细信息
#sonar.login 替换成sonarqube的token,这里的token需要登录到sonarqube—用户—安全里去创建
dotnet sonarscanner begin /k:"ProjectName" /d:sonar.host.url=http://192.168.0.XX:9000  /d:sonar.verbose=true /d:sonar.login="squ_e830d34d2712a7976d44f99dafde5e760"
dotnet build /usr/local/my_jenkins/workspace/test/XX/XX.csproj
dotnet sonarscanner end /d:sonar.login="squ_e830d34d2712a7976d44f99dafde5e760f"

八、进入Jenkins创建一个构建项目,远程到宿主机,使用publish over ssh插件

#远程到宿主机构,执行之前宿主机的shell脚本
#但是这里有一个问题,宿主机已经安装了dotnet-sonarscanner、java 但是执行的时候还是提示找不到命令,然后再执行脚本前又把环境变量设置下
export JAVA_HOME=/usr/local/java/jdk-11.0.17
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
bash XXX.sh

image

九、登录到sonarqube查看项目的扫描报告

十、扫描报告有一个警告,所以需要再到宿主机安装一个node.js

JavaScript/TypeScript/CSS rules were not executed. Error when running: 'node -v'. Is Node.js available during analysis?

十一、安装node.js

vi /etc/profile
export NODE_HOME=/usr/local/nodejs/node-v18.15.0-linux-x64
export PATH=${NODE_HOME}/bin:$PATH
#使配置文件生效
source /etc/profile
  • 查看是否安装成功
    node --version

十二、再把Jenkins 远程调用宿主机命令里加上nodejs的环境变量

export JAVA_HOME=/usr/local/java/jdk-11.0.17
export PATH=${JAVA_HOME}/bin:$PATH
export NODE_HOME=/usr/local/nodejs/node-v18.15.0-linux-x64
export PATH=${NODE_HOME}/bin:$PATH
source /etc/profile
bash XX.sh

image

十三、经过后面测试发现,在Jenkins远程宿主机执行shell命令的时候,只需要加一句source /etc/profile就可以了,如果只加一句不行的话,到时候再把环境变量加上,因为扫描的时候会用到比如jdk node.js命令这些分析对应的文件代码

source /etc/profile
bash XX.sh
posted @ 2023-03-09 18:23  弩哥++  阅读(151)  评论(0编辑  收藏  举报