本文主要内容是搭建Jenkins 持续集成环境,配置.NET web项目的CI(自动化部署没有做)并通过sonarqube插件实现源代码质量检测,网上针对.NET项目的该类实践介绍不多。本文内容根据网络搜索和我的实战操作记录整理而成,踩坑无数,最后成功,希望对大家有用。
操作系统:Windows10
Jenkins:2.394
sonarqube:9.9
测试项目为:.Net Core 桌面端项目,不需要IIS
参考我的另一篇文章,这里不再赘述,Windows环境安装更简单,也可以参考下文。
Centos+Gitlab+Jenkins 针对.NET项目持续集成环境搭建和自动化部署
这里注意一点,安装完Jenkins后建议修改工作空间workspace,默认的workspace地址在一个旮旯角落的位置地址看着很不舒服,趁工作没有开始,第一时间换掉(切记一定要先完成首次登录),换掉后会重置用户信息,也就是再来一次“首次登录”,一定要完成,不要搞到一半把页面关了,不要问为什么?问我也不会告诉你我就是因为这个重新又装了一遍Jenkins
https://www.sonarsource.com/products/sonarqube/downloads/
https://docs.sonarqube.org/latest/setup-and-upgrade/install-the-server/#installing-sonarqube-from-the-zip-file
数据库我安装的是PostgreSQL
在数据库里建一个数据库实例命名为sonarqube
配置文件位置
C:\DevelopsRepos\sonarqube-9.9.0.65466\conf\sonar.properties
配置文件要设置的地方(端口号自己按需定义)
# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
#sonar.jdbc.username=
#sonar.jdbc.password=
sonar.jdbc.username=postgres
sonar.jdbc.password=111111
#----- PostgreSQL 11 or greater
# By default the schema named "public" is used. It can be overridden with the parameter "currentSchema".
#sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
# Binding IP address. For servers with more than one IP address, this property specifies which
# address will be used for listening on the specified ports.
# By default, ports will be used on all IP addresses associated with the server.
#sonar.web.host=0.0.0.0
#sonar.web.host=127.0.0.1
sonar.web.port=8088
#sonar.web.context=/sonarqube
# Elasticsearch port for incoming HTTP connections. Default is 9001. Use 0 to get a free port.
# As a security precaution, should be blocked by a firewall and not exposed to the Internet.
#sonar.search.port=9001
sonar.search.port=8081
进入sonarqube程序主目录,C:\DevelopsRepos\sonarqube-9.9.0.65466\bin\windows-x86-64,双击StartSonar.bat文件,启动StartSonar。
https://docs.sonarqube.org/latest/analyzing-source-code/scanners/jenkins-extension-sonarqube/
在Jenkins Plugins管理中下载SonarQube Scanner for Jenkins插件
https://docs.sonarqube.org/latest/analyzing-source-code/scanners/sonarscanner-for-dotnet/
下载完后解压到目录
#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here
#----- Default SonarQube server
sonar.host.url=http://localhost:8088
sonar.scm.provider=git
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
如果不设置sonar.scm.provider=git可能引发报错:
SCM provider autodetection failed. Both svn and git claim to support this project. Please use sonar.scm.provider to define SCM of your project.
SonarQube servers属性设置,sonar的token点击添加按钮,类型选Secret Text
SonarQube适配的JDK是哪个版本请在官网上查阅,根据下载的版本找对应版本的JDK
编排流水线步骤
Project key和Project name可以自己定义
Command Line Arguments参数语法
/t:Rebuild
/p:Configuration=Release
/p:MonoSymbolArchive=False
/p:VisualStudioVersion=17.0
/p:OutDir=C:\ProgramData\Jenkins\.jenkins\workspace\BuildForPlugIn