目前的架构
- 先部署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/
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
五、设置环境变量
export PATH=/home/XX/.sonarqube/bin:$PATH
export PATH=/home/XX/.dotnet/tools/.store/dotnet-sonarscanner/5.11.0:$PATH
六、安装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