之前写了一篇 Jenkins+gogs 发布的基础文章. 这篇博客是基于之前的文章写的.
之前文章地址: https://www.cnblogs.com/cluyun/p/10848989.html
所以阅读以下文章你需要有 Jenkins+Git 的基础构建的知识.
这次主要是写如何用 Jenkins 构建基于. NET Framework 的 web 应用程序.
一. 先决条件
安装顺序 | 名称 | 下载地址 | 备注 |
1 | .NET Framework Developer Pack | 下载安装你要编译的项目的版本。如果安装的时候提示已经安装更高的版本啥的就不要管了。 | |
2 | .NET Framework Runtime | ||
3 | Visual Studio MSBuild | 没错就是下载 Visual Studio,如果想省事就直接把 vs 装在服务器上吧。不想的话就复制本机的 "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"(vs 安装目录) 目录下的 "MSBuild" 和 "Team Tools" 两个文件夹到服务器的相同目录下吧。 | |
4 | Visual Studio Team Tools | ||
5 | NuGet | https://www.nuget.org/downloads | 这个是用来下载你项目中引用的包的。下载好了后把 exe 放到你觉得合适的地方就好了,不用双击运行。 |
二. 配置 Jenkins
先安装插件 MSBuild
在全局工具配置里面配置 MSBuild, 然后点击保存.
解释下这里的参数:
Name: 这个名字随便写, 到后面项目构建的时候要根据这个名字选择.
Path to MSBuild:vs 安装目录中 MSBuild.exe 的所在路径.
三. 在构建项目中使用
先创建项目
点击确定
配置好 Git
增加构建步骤,"执行 windows 批处理命令" 和 "Build a Visual Studio project or solution using MSBuild"
执行 Windows 命令就是还原 nuget 包, 命令格式为: nuget.exe 地址 restore 项目文件. sln
Build a Visual Studio project or solution using MSBuild 中的参数含义:
MSBuild Version: 选择你之前在全局配置里面弄好的
MSBuild Build File: 写你项目中的. csproj 文件的路径
Command Line Arguments: 要执行的 MSBuild 命令
介绍下 MSBuild 命令
官方文档:
我这里说下我使用的:
/t:Rebuild: 重新生成
/p:Configuration=Release:Release 生成模式
/p:VisualStudioVersion=15.0: 指定子工具集版本, 不设置会报错.(VS2015 是 14.0,VS2017 是 15.0)
/p:DeployOnBuild=True;PublishProfile="pubxml 文件名": 使用. pubxml 发布文件来发布项目
/p:publishUrl="存放路径": 构建完成后的整个编译后项目文件存放地.
这里尤其应该注意的是这个 pubxml 文件, 默认应该在 "/Properties/PublishProfiles" 文件夹下. 但是默认项目好像是没有的.
所以这个时候, 要手动生成了如果你用过 vs 自带的发布就应该会, 在 vs 中右键 Web 项目然后点击发布, 发布完了后,"/Properties/PublishProfiles" 文件夹下就会出现. pubxml 文件了.
最后把. pubxml 文件上传到 Git 就好. 如果你不想我说的这么麻烦, 可以直接在 "/Properties/PublishProfiles" 文件夹下新建 FolderProfile.pubxml, 然后在里面写我下面的内容, 最后上传到 Git 也行.
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- 此文件由 Web 项目的发布 / 打包过程使用. 可以通过编辑此 MSBuild 文件
- 自定义此过程的行为. 为了解与此相关的更多内容, 请访问 https://go.microsoft.com/fwlink/?LinkID=208121.
- -->
- <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <WebPublishMethod>FileSystem</WebPublishMethod>
- <PublishProvider>FileSystem</PublishProvider>
- <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
- <LastUsedPlatform>Any CPU</LastUsedPlatform>
- <SiteUrlToLaunchAfterPublish />
- <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
- <ExcludeApp_Data>False</ExcludeApp_Data>
- <publishUrl>bin\Release\Publish</publishUrl>
- <DeleteExistingFiles>False</DeleteExistingFiles>
- </PropertyGroup>
- </Project>
这里我要解释下 publishUrl 这个节点, 这个节点就是发布后的文件存放地, 但是我觉得这个写服务器路径不太好, 所以在命令行里面写了.
命令行里面的参数应该是会覆盖这个节点里面写的. 所以按照命令行里面的路径去发布了.
最后, 保存就可以了. 然后在外面构建即可.
感谢以下链接给我的帮助:
- https://www.cnblogs.com/huhubun/p/6345077.html
- https://blog.csdn.net/sD7O95O/article/details/82504547
来源: http://www.bubuko.com/infodetail-3122473.html