# 安装 SVN Server
SVN Server
# 创建仓库
在控制面板创建一个仓库与 User 后配置完成
C:\Program Files\VisualSVN Server\bin\VisualSVN Server.msc
# 安装 Tortoise SVN
Tortoise SVN
# Checkout 仓库
从远程端 Checkout 刚才生成的仓库,并将要自动构建的工程放入其中。Commit 后配置完成
# 安装 Jenkins
- jenkins
- JDK
按照 Jenkins 需要 Java17 - Java21
建议进行后续步骤的乱码解决步骤之后再进行以后的操作
# 额外插件
插件商城安装 SubVersion 、 MSBuild 与 MSTest
# 配置 Token
导航至 Dashboard - Manage Jenkins - User - 选择当前用户 - Security ,创建一个 Token,记录生成的 Token 与 Token 名称
# 配置 MSBuild
- 导航至
Dashboard - Manage Jenkins - Tools - 滚动至
MSBuild 安装,点击MSBuild 安装,点击新建 - 输入可用名称,此名称没有要求。取消勾选
Install automatically,在新增的框中添加本机 MSBuild.exe 绝对路径
MSBuild.exe 位于 Visual Studio 的安装目录中
例如:D:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe
- 点击底部的 Save 按钮
# 新建持续集成项目
- 导航至
Dashboard - 新建Item - 输入一个项目名称,并选择
FreeStyle project - 由于我们按照了 SVN 扩展,在源码管理一栏能看到
Subversion选项 - 填入 SVN 仓库的地址
![20250403162404.png]()
- Credentials 如果之前没有添加过,请点击下方的添加按钮,填入 SVN 账户与密码,之后在这里选中刚添加的用户。
- 滚动至 Triggers 部分,选择
触发远程构建,并在框内填入之前记录的 Token 名称 - 滚动至 Build Steps 部分,点击增加构建步骤,选择
Execute Windows batch command,在下方框中填入,其中 cd 后的路径需要按需填写
1 | cd trunk\WebApp1\ |
dotnet restore 用于还原 Nuget 包
- 选择
Build a Visual Studio project or solution using MSBuild - 选择上一步中添加的
MSBuild 名称,在Project File填入 sln 文件的相对路径![20250403163223.png]()
- 如果需要构建完成后启动,可以在再添加一个新的步骤
1 | cd trunk\WebApp1\WebApp1\bin\Debug\net9.0 |
start 指令用于启动项目,不阻塞脚本运行
- 点击底部的 Save 按钮
- 点击左侧的
Build Item测试构建过程是否出错
# 修复控制台输出的中文乱码
此步骤需要更改 Jenkins 的运行方式从 Windows 服务改为终端启动,且会丢失原始的配置,若不能满足需求还请自行寻找解决方案。
- 通过任务管理器的服务一栏,终止 Jenkins 服务
![20250403163759.png]()
- 打开 Jenkins 安装路径
C:\Program Files\Jenkins
- 新建脚本,填入以下内容,并更改文件扩展名为
.bat
1 | java -Dfile.encoding=UTF-8 -jar Jenkins.war |
- 使用管理员权限启动脚本,并重新配置 Jenkins
# 自动构建
# 定时构建
Jenkins 会定时拉取 SVN 版本号,当版本号变化时,会触发一次构建
# 配置
在 Triggers - Poll SCM - 日程表 输入 corn 表达式
# SVN 钩子自动构建
# 配置 SVN post-commit 钩子
- 打开 SVN 的创建仓库路径
D:\Repositories\TestRepo
- 打开 hook 文件夹,在此处放置
post-commit脚本来实现提交后通知 Jenkins 进行构建。脚本文件可以是.bat.vbs.exe
# 请求步骤
- 向
{jenkinsUrl}/crumbIssuer/api/json发送请求- 添加鉴权 Header, key = Authorization, Value = Base64 (
{username}:{token}) - Json 解析返回结果,获取
crumbRequestField与crumb - 记录 Cookie
- 添加鉴权 Header, key = Authorization, Value = Base64 (
- 向
{jenkinsUrl}/job/{jobName}/build?token={tokenName}发送请求- 添加鉴权 Header, key =
crumbRequestField, Value =crumb - 添加上一步获取的 Cookie
- 200 返回码为成功,前往 Jenkins 查看是否创建了构建任务
- 添加鉴权 Header, key =
# C# 示例脚本
1 | using Newtonsoft.Json.Linq; |
使用 Fody 生成单一文件后,放置在 hook 文件夹中并改名为 post-commit.exe
Commit 后,检查 Jenkins 是否开始构建任务


