发布NuGet包 - TeamCity

use*_*711 5 teamcity nuget octopus-deploy proget

我刚刚设置了TeamCity来自动化我们的构建,我们当前的解决方案同时具有开发和主分支.我想要实现的是让开发分支构建并发布到我们的ProGet安装上的开发NuGet feed,然后将主分支发布到ProGet服务器上的Main NuGet feed.

我们正在使用章鱼部署来部署软件包,在TeamCity中我们安装了章鱼部署插件,如果我勾选框来运行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.
Run Code Online (Sandbox Code Playgroud)

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

这里的最终目标是将这些包发布到ProGet上的私有Feed.我不介意使用OctoPack,但在我脑海中想要从TeamCity中删除该依赖,但我可以忍受它.但是,当我尝试使用NuGet Publish运行器时,如何选择发布已创建的任何NuGet工件?

我一直在谷歌搜索疯狂,我找不到任何有用的链接,描述你应该输入什么,我真的很感激任何有用的评论/答案.

我们正在使用TeamCity的8.15版.

Ste*_*man 10

希望以下内容至少可以解决您的部分问题; 主要是与如何发布打包工件有关的位.

NuSpec方法

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

接下来,指定NuGet Publish构建步骤,填写Package Source/API密钥等,并指定要上载的Packages

%system.PackageDeployOutput%\*.nupkg

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

OctoPack支持

如果你正在使用OctoPackMsBuild构建步骤,你可以通过声明一个名为的系统参数来使用类似的方法

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

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