目前的架构
- 先部署Docker
- 容器化部署Jenkins
- 容器化部署sonarqube
一、部署docker这步骤省略,直接参考官方文档,或者参考之前文章
二、容器化部署Jenkins,参考之前文章
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/
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,安装参考
七、编写一个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
九、登录到sonarqube查看项目的扫描报告
十、扫描报告有一个警告,所以需要再到宿主机安装一个node.js
JavaScript/TypeScript/CSS rules were not executed. Error when running: 'node -v'. Is Node.js available during analysis?
十一、安装node.js
- 官网地址:https://nodejs.org/en/download/
- 把下载的文件拷贝到服务器
- 解压
tar -xvf node-v18.15.0-linux-x64.tar.xz
- 配置环境变量
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
十三、经过后面测试发现,在Jenkins远程宿主机执行shell命令的时候,只需要加一句source /etc/profile就可以了,如果只加一句不行的话,到时候再把环境变量加上,因为扫描的时候会用到比如jdk node.js命令这些分析对应的文件代码
source /etc/profile
bash XX.sh