 
简介
Jenkins 是一个持续集成(CI&CD)工具,用以构建、部署、自动化。
运行流程
以部署PC客户端软件为例:
1.连接 GitLab 仓库 pull 最新代码
2.使用 NuGet 还原引用库
3.使用 MSBuild 编译项目工程
4.使用 NSIS 打包软件为安装包
5.以邮件方式将打包文件发送(未完成)
软件部署
软件安装参考 官方文档
遇到的问题
修改工作目录
我是使用 Windows 下 java 命令运行
| 1 | java -jar jenkins.war --httpPort=8080 | 
工作目录默认为 C:\Users{用户名}.jenkins
直接拷贝工作目录到其他地方例如 D:.jenkins
修改启动命令
| 1 | java -DJENKINS_HOME=D:\.jenkins -jar jenkins.war --httpPort=8080 | 
插件安装失败
登录重启页重启后重试
http://localhost:8081/restart
需安装 Jenkins 插件
Git、MSBuild、NuGet、PowerShell
配置系统环境变量
Path 下增加 MSBuild 路径:
..\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin\amd64
NuGet 控制台程序下载
https://www.nuget.org/downloads
下载后拷贝至 Path 环境变量中
构建
Pull Git 代码
填写 Git 地址以及分支名称即可
设置 Git 用户名密码
如果本地 Git 记录用户无权限访问则会报错:
| 1 | Failed to connect to repository : Command "git.exe ls-remote -h -- http://192.168.5.188:9090/***/***.git HEAD" returned status code 128: | 
选择:凭据→系统→全局凭据
选择:添加凭据
配置:Git 用户名密码
配置:Credentials 中选择添加的凭据
还原 NuGet 包
构建中选择:执行 Windows 批处理程序
| 1 | :: 清空项目中多余文件 | 
 
编译代码(客户端)
构建中选择:Build a Visual Studio project or solution using MSBuild
| function | value | 
|---|---|
| MSBuild Version | Default | 
| MSBuild Build File | project.sln | 
| Command Line Arguments | /t:Build /p:Configuration=Release;VisualStudioVersion=16.3 | 
 
编译时如需选择解决方案配置和解决方案平台
| 1 | :: 解决方案配置“Release|Any CPU” | 
编译代码(服务端)
调用发布文件 .\Properties\PublishProfiles\FolderProfile.pubxml
测试 MSBuild 命令中加入 VisualStudioVersion=16.3 会导致不会生成发布目录
| 1 | 
 | 
| function | value | 
|---|---|
| MSBuild Version | Default | 
| MSBuild Build File | project.sln | 
| Command Line Arguments | /t:Build /p:Configuration=Release /p:DeployOnBuild=True /p:PublishProfile=FolderProfile | 
|  | 
拷贝或删除多余文件
| 1 | :: 拷贝文件 | 
 
程序打包
构建中选择:执行 Windows 批处理程序
NSIS 使用参考:使用介绍
| 1 | :: 调用 makensis 命令构建 NSI | 
 
压缩文件打包
构建中选择:PowerShell
| 1 | # 调用 PowerShell 命令压缩文件 | 
 
构建后操作
归档成品
在归档成品中直接写入打包好的安装包名称,会在构建结束后在结果中显示并可以直接下载
 
FAQ
提示 ‘xxx’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
通常这个提示代表着环境变量配置错误,但是检测时发现系统环境变量配置正常,可以在 Jenkins 目录中手动执行命令操作,重启电脑和 Jenkins 后依然无效。
解决方式:选择 Jenkins → 左下角“构建执行状态” → 右侧齿轮标志“设置” → 节点属性 → 新增“Environment variables” → 拷贝报错(或全部)的环境变量到此处 → 保存
- 无法识别环境变量中的:%SystemRoot%\,改用绝对路径。
 
集成 SonarQube
安装使用 SonarQube 参考博客:SonarQube 使用介绍
SonarQube 创建 Jenkins ToKen
 
下载插件 SonarQube Scanner
 
Jenkins 配置 SonarQube
添加凭据:
配置插件 SonarQube Scanner
系统管理→系统配置→SonarQube servers
配置插件 SonarQube Scanner
系统管理→全局工具配置→SonarQube Scanner
配置插件 SonarScanner for MSBuild
系统管理→全局工具配置→SonarScanner for MSBuild
配置插件 JDK
系统管理→全局工具配置→JDK
构建项目
增加配置:
构建中选择:SonarScanner for MSBuild - Begin Analyoio
配置项 Project key 与 Project name 与 创建 SonarQube 中的 Project key 与 Project name 对应
在 MSBuild 后选择: SonarScanner for MSBuild - End Analyoio
2022年3月15日补充
通过 WebHook 触发 tag 自动构建
确保安装 GitLab 插件
先在 Jenkins 中创建构建触发器:
构建触发器 -> 勾选:Build when a change is pushed to GitLab。
右侧显示:GitLab webhook URL:…… 为 WebHook API 地址,用于填写到 GitLab 中。
点击标签内高级按钮 -> Allowed branches 选择触发的分支(默认 Allow all branches to trigger this job 为所有分支都可以触发) -> Secret token 点击 Generate 按钮 生成 Token,用于填写到 GitLab 中。
GitLab 中项目仓库:设置 -> 集成 -> 填写从 Jenkins 中获取的 WebHook Url 和 Secret Token -> 勾选 Trigger 中的触发类型,当前项目仅需要 Tag 触发。
点击 Add webhook 按钮 保存设置,在下方 Project Hooks 中显示所有已有信息,点击 Test 可测试请求。
构建后上传至 FTP
确保安装 Publish Over FTP 插件
Jenkins 配置中添加:FTP repository hosts
项目构建后操作中添加:Send build artifacts over FTP -> 选择 FTP Name -> 填写匹配上传的 Source files -> 填写 Remote directory