发布NuGet软件包-TeamCity

发布NuGet软件包-TeamCity,teamcity,nuget,octopus-deploy,proget,Teamcity,Nuget,Octopus Deploy,Proget,我刚刚设置了TeamCity来自动化我们的构建,我们当前的解决方案有一个开发和主分支。我试图实现的是让开发分支构建并发布到ProGet安装上的开发NuGet提要,然后让主分支发布到ProGet服务器上的主NuGet提要 我们使用octopus deploy来部署软件包,在TeamCity中,我们安装了octopus deploy插件,如果我勾选运行OctoPack,它将构建软件包,并且在构建完成时它们将显示为工件。如果我尝试在TeamCity中使用NuGet Pack构建步骤,我们的一个项目会出

我刚刚设置了TeamCity来自动化我们的构建,我们当前的解决方案有一个开发和主分支。我试图实现的是让开发分支构建并发布到ProGet安装上的开发NuGet提要,然后让主分支发布到ProGet服务器上的主NuGet提要

我们使用octopus deploy来部署软件包,在TeamCity中,我们安装了octopus deploy插件,如果我勾选运行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上的私有提要。我不介意使用OctoPack,但在我的脑海中,我想从TeamCity中移除这种依赖,但我可以接受它。但是,当我尝试使用NuGet Publish runner类型时,如何选择发布已创建的任何NuGet工件

我一直在谷歌上疯狂地搜索,我找不到任何有用的链接来描述你应该输入的内容,如果有任何有用的评论/答案,我将不胜感激


我们正在使用TeamCity的8.15版。

希望以下内容至少能帮助您解决部分问题;主要是关于如何发布打包工件的位

NuSpec方法

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

接下来,指定一个
NuGet Publish
build步骤,填写包源/API键等,并指定要上传的包

%system.PackageDeployOutput%\*.nupkg

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

八达通支持

如果将MsBuild构建步骤与OctoPack一起使用,则可以通过声明一个名为

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


您可以将它们声明为根项目参数,这样您就可以充分利用这两个方面。我目前首选的打包方法是将nuspec文件用于可部署端点。我发现,在更复杂的部署中,OctoPack会有一点开销(对于基本的MsBuild项目来说,这很好)。

您将哪些参数传递给
nuget-pack
?看起来这里有多个问题,你可能想考虑把它们分开,这样它们就不那么耦合了。最好的堆栈溢出问题是那些可以帮助其他人的问题。因此,这是一种有点不同的方法,但是既然您想简化部署方法,那么直接部署到TeamCity之外怎么样?可以导入和部署TeamCity构建,而无需NuGet参与。免责声明:我为inedo工作。