teamcity - 发布 NuGet 包 - TeamCity

标签 teamcity nuget octopus-deploy proget

我刚刚设置了 TeamCity 来自动化我们的构建,我们当前的解决方案既有开发分支又有主分支。我想要实现的目标是让开发分支构建并发布到 ProGet 安装上的开发 NuGet 源,然后将主分支发布到 ProGet 服务器上的主 NuGet 源。

我们使用 octopus 部署来部署包,在 TeamCity 中我们安装了 octopus 部署插件,如果我勾选运行 OctoPack 的框,它会构建包,并且在构建完成时它们显示为工件。如果我尝试在 TeamCity 中使用 NuGet Pack 构建步骤,我的项目之一会出现以下错误:

[08:33:49] :         [pack] Attempting to build package from 'xxx.csproj'.
[08:33:50]W:         [pack] Unable to find 'xxx.exe'. Make sure the project has been built.

该项目已经构建并且可以与 OctoPack 一起使用,那么为什么它不能与 NuGet Pack 一起使用? Wwe 有五个项目正在构建,前四个运行良好,一个是控制台应用程序,一个是 mvc 网站,两个是类库。不起作用的是 Windows 服务。

这里的最终目标是将这些包发布到 ProGet 上的私有(private)源。我不介意使用 OctoPack,但我想从 TeamCity 中删除这种依赖关系,但我可以接受它。但是,当我尝试使用 NuGet 发布运行程序类型时,如何选择发布已创建的任何 NuGet 工件?

我一直在疯狂地搜索,但找不到任何有用的链接来描述您应该输入的内容,我非常感谢任何有用的评论/答案。

我们正在使用 TeamCity 8.15 版本。

最佳答案

希望以下内容至少能解答您的部分问题;主要是与如何发布打包工件相关的部分。

NuSpec 方法

使用NuGet Pack 构建步骤时,您可以指定输出目录,这将确定包的输出位置。您可以将其指定为 checkout 目录的相对路径,最好将其定义为构建参数,例如 %system.PackageDeployOutput%,因为您将在下一步中使用它。 .:

接下来,指定 NuGet Publish 构建步骤,填写包源/API key 等,并指定要上传的包

%system.PackageDeployOutput%\*.nupkg

这将获取上一步中输出的包。我已经非常有效地使用了它,并且参数化方法鼓励所有构建中的约定。

OctoPack 支持

如果您将 MsBuild 构建步骤与 OctoPack 一起使用,则可以通过声明名为 的系统参数来使用类似的方法

system.OctoPackPublishPackageToFileShare = %teamcity.build.checkoutDir%\%system.PackageDeployOutput% (注意与上面相同的参数)

您可以将它们声明为根项目参数,这样您就可以两全其美。目前,我首选的打包方法是使用 nuspec 文件作为可部署端点。我发现 OctoPack 在进行更复杂的部署时会产生一些开销(对于基本的 MsBuild 项目来说没问题)。

关于teamcity - 发布 NuGet 包 - TeamCity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26560711/

相关文章:

Azure Web应用程序: Warning about an "auto-swap lock file"

tfs - 使用 Octopus 部署特定版本的 NuGet 包

teamcity - 将 GitLab 与 TeamCity 集成

api - TeamCity - 你如何通过rest api获得每个项目最后完成构建的列表?

mono - 在 CentOS 上使用 TeamCity 从 GitHub 构建 C#(Mono)解决方案

.net - OpenWrap 与 NuGet

teamcity - 如何在 TeamCity 的电子邮件模板中使用构建参数

c# - 使用 NuGet.Core 以编程方式推送 NuGet 包

c# - Visual Studio 应用程序中的解决方案中缺少某些 NuGet 包

nuget - 我可以在管理 NuGet 包中使用我的 OctopusDeploy 内置包存储库吗?