如何为 ASP.NET 5 项目设置 TeamCity 构建
How to setup a TeamCity build for a ASP.NET 5 project
我正在尝试为我正在开发的网站设置一个 CI 服务器,但我找不到关于如何使用新的 ASP.NET 5 执行此操作的任何信息。
我们(ASP.NET 团队)使用 TeamCity 作为构建服务器。每个 repo 都有一个 build.cmd
文件,类似于 this one。 TeamCity 只是调用该文件。
对于 Mac/Linux 版本,有一个 build.sh
文件。
请查看这些博文;
http://blog.coderinserepeat.com/2015/01/25/building-asp-net-5-projects-in-teamcity/
http://blog.maartenballiauw.be/post/2014/12/19/Building-future-NET-projects-is-quite-pleasant.aspx
目前您可以尝试将 TeamCity 插件用于 .NET Core 项目:
https://github.com/JetBrains/teamcity-dotnet-plugin
我找到你了,兄弟。这花了我几天时间才弄清楚。此配置位于 ASP.NET Core 1.0 RC2/preview2 项目的 TeamCity v10 上。作为奖励,我包括了它推送到 Octopus Deploy 的步骤。您将需要安装 dotnet teamcity 插件和最新的具有推送功能的 Octopus Deploy 插件。以下是构建步骤的概述:
首先,不要尝试使用 dotnet restore
来恢复包。如果您有未编译为 .Net Core 的内部 nuget 包,它将不起作用。这花了很长时间才弄清楚。在人们将所有内容都转换为 .Net Core 或 Microsoft 修复 dotnet.exe 以使其更加灵活之前,我会忽略尝试使用 dotnet restore
。
我读到的一些资料说使用最新的 NuGet 测试版 3.5。当我尝试这样做时,我会收到以下错误。
[14:30:09][恢复] 从 D:\buildAgent\tools\NuGet.CommandLine.3.5.0-rc1\tools\NuGet.exe
开始 NuGet.exe 3.5.0.1737
[14:30:10][restore] 无法从程序集 'NuGet, Version=3.5.0.1737, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
加载类型 'NuGet.CommandAttribute'
我不知道那是什么意思,我也不在乎。现在使用 3.4.4。其余部分酌情填写。
dotnet publish
步骤非常简单。确保提供输出目录,因为您要在最后一步中使用它。此外,由于 this bug,请务必使用 %teamcity.build.workingDir%
变量指定绝对路径。否则它将无法找到您的 web.config
文件并且无法完成整个站点的发布。您会丢失 web.config 和 wwwroot 之类的东西!
终于Push到Octopus了。这对我来说非常棘手。注意说的部分
%teamcity.build.workingDir%/published-app/**/* => OrderReviewBoard.1.0.0.zip
如果这其中的任何部分无效,您的步骤将在不解释的情况下失败!!!无效,我的意思是您可能放置了一个 teamcity 环境变量(例如 %build.number%
它们在所有示例中显示)在未正确解析的 zip 名称中。或者您指定了一个不存在的路径。或者任何数量的东西,你会看到一个错误,上面写着“[Octopus Deploy] Please specify a package to push”。这意味着永远不会生成一个,因为该语句失败了。我知道你想在那里有一个自动递增的内部版本号。我会把它留给你弄清楚如何做到这一点。
不要对这里的 运行 感到困惑。 Octopus tries to explain it on their site,却被隐藏在这里。有 octo pack
和 octo push
。 octo pack
的新版本是 运行 看不见的,这取决于您在 "Package paths" 框中输入的任何语句。不要在尝试创建 nuspec 包或尝试使用 dotnet pack
时分心。对于我们的目的来说,这些都是死胡同。创建一个 .zip 文件并继续您的生活。最后,请注意我添加的额外命令行参数。这些可以帮助您一点点。他们不是必需的。祝你好运。
由于ASP.NET核心世界发生了很多变化,我也被问过几次,所以我写了一个step-by-step guide on how to setup a CI/CD environment using TeamCity for .NET Core。我觉得对初学者特别有帮助。
我正在尝试为我正在开发的网站设置一个 CI 服务器,但我找不到关于如何使用新的 ASP.NET 5 执行此操作的任何信息。
我们(ASP.NET 团队)使用 TeamCity 作为构建服务器。每个 repo 都有一个 build.cmd
文件,类似于 this one。 TeamCity 只是调用该文件。
对于 Mac/Linux 版本,有一个 build.sh
文件。
请查看这些博文;
http://blog.coderinserepeat.com/2015/01/25/building-asp-net-5-projects-in-teamcity/
http://blog.maartenballiauw.be/post/2014/12/19/Building-future-NET-projects-is-quite-pleasant.aspx
目前您可以尝试将 TeamCity 插件用于 .NET Core 项目: https://github.com/JetBrains/teamcity-dotnet-plugin
我找到你了,兄弟。这花了我几天时间才弄清楚。此配置位于 ASP.NET Core 1.0 RC2/preview2 项目的 TeamCity v10 上。作为奖励,我包括了它推送到 Octopus Deploy 的步骤。您将需要安装 dotnet teamcity 插件和最新的具有推送功能的 Octopus Deploy 插件。以下是构建步骤的概述:
首先,不要尝试使用 dotnet restore
来恢复包。如果您有未编译为 .Net Core 的内部 nuget 包,它将不起作用。这花了很长时间才弄清楚。在人们将所有内容都转换为 .Net Core 或 Microsoft 修复 dotnet.exe 以使其更加灵活之前,我会忽略尝试使用 dotnet restore
。
我读到的一些资料说使用最新的 NuGet 测试版 3.5。当我尝试这样做时,我会收到以下错误。
[14:30:09][恢复] 从 D:\buildAgent\tools\NuGet.CommandLine.3.5.0-rc1\tools\NuGet.exe
开始 NuGet.exe 3.5.0.1737[14:30:10][restore] 无法从程序集 'NuGet, Version=3.5.0.1737, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
加载类型 'NuGet.CommandAttribute'我不知道那是什么意思,我也不在乎。现在使用 3.4.4。其余部分酌情填写。
dotnet publish
步骤非常简单。确保提供输出目录,因为您要在最后一步中使用它。此外,由于 this bug,请务必使用 %teamcity.build.workingDir%
变量指定绝对路径。否则它将无法找到您的 web.config
文件并且无法完成整个站点的发布。您会丢失 web.config 和 wwwroot 之类的东西!
终于Push到Octopus了。这对我来说非常棘手。注意说的部分
%teamcity.build.workingDir%/published-app/**/* => OrderReviewBoard.1.0.0.zip
如果这其中的任何部分无效,您的步骤将在不解释的情况下失败!!!无效,我的意思是您可能放置了一个 teamcity 环境变量(例如 %build.number%
它们在所有示例中显示)在未正确解析的 zip 名称中。或者您指定了一个不存在的路径。或者任何数量的东西,你会看到一个错误,上面写着“[Octopus Deploy] Please specify a package to push”。这意味着永远不会生成一个,因为该语句失败了。我知道你想在那里有一个自动递增的内部版本号。我会把它留给你弄清楚如何做到这一点。
不要对这里的 运行 感到困惑。 Octopus tries to explain it on their site,却被隐藏在这里。有 octo pack
和 octo push
。 octo pack
的新版本是 运行 看不见的,这取决于您在 "Package paths" 框中输入的任何语句。不要在尝试创建 nuspec 包或尝试使用 dotnet pack
时分心。对于我们的目的来说,这些都是死胡同。创建一个 .zip 文件并继续您的生活。最后,请注意我添加的额外命令行参数。这些可以帮助您一点点。他们不是必需的。祝你好运。
由于ASP.NET核心世界发生了很多变化,我也被问过几次,所以我写了一个step-by-step guide on how to setup a CI/CD environment using TeamCity for .NET Core。我觉得对初学者特别有帮助。