【问题标题】:TeamCity Using OctoPack - Isn't Excluding Superfluous FilesTeamCity 使用 OctoPack - 不排除多余的文件
【发布时间】:2014-06-10 23:34:43
【问题描述】:

我只是在考虑简化从我的构建系统中出来的 nuget 包,但我不知道如何只打包所需的文件。

我有几个配置共享一个 Root VCS 签出。我有一个运行带有单元测试的调试版本的配置。我还有一个发布配置,它执行发布构建,然后此配置还使用 TeamCity OctoPack 插件来创建 nuget 包。

我想要实现的是构建不包含 *.pdb*.xml 文档文件的 nuget 包,因为发布部署不需要这些文件。

我浏览了 OD 网站上的这个页面:

http://docs.octopusdeploy.com/display/OD/Using+OctoPack

并且根据这个页面 OctoPack 默认应该只打包需要的文件。我不完全清楚如何或需要做什么来解决这个问题,因为它似乎没有像描述的那样工作。

似乎一种解决方案是为我要部署的项目提供一个 nuspec 文件,但我也想知道在我走这条路之前是否缺少一些东西。

我还有一些在构建后事件中复制的 MEF 插件,这些插件实际上并不包含在 nuget 包中,而实际上它们是应用程序运行所必需的。我想我需要明确说明 nuspec 文件,但想确认这一点。

实现我需要的最简单的方法是什么?

【问题讨论】:

    标签: teamcity nuget nuget-package octopus-deploy


    【解决方案1】:

    假设您正在运行更高版本的 OctoPack,在您的发布版本中,您可以设置一个系统参数 system.DebugType = None,它将被传递给 OctoPack 构建脚本并阻止创建 PDB。

    这只是覆盖了在您的 csproj msbuild 文件中定义的设置(假设为 C#),因此您可以在任何您想防止在构建配置级别创建 PDB 的地方使用它(不仅仅是 OctoPack)。我通常更喜欢这种方法,因为它可以防止开发人员在项目文件中进行更改而对构建产生副作用。

    至于xml文件,我实际上并没有尝试过,但是您可以尝试类似的方法并创建一个系统参数system.DocumentationFile = ""来清空输出。

    【讨论】:

    • 查看文档显示该设置实际上称为DebugSymbols=false,似乎DebugType 定义了MSBuild 将生成的调试信息级别。
    • 这很有趣 - 这可能是 MSBuild 版本的差异。我正在使用 DebugType 属性运行多个构建。其他人似乎注意到了same behaviour
    • 这很奇怪。我还没有测试,因为我目前正在对我的整个构建过程进行全面审查。将报告我的发现。
    • 我已经为此工作了几个小时,但我放弃了。据我所知,OctoPack 并不是非常可靠或智能。我更新到最新版本,现在它开始完成忽略一堆必需的文件。
    【解决方案2】:

    如果您真的想确保文件已被删除,有几种方法可以做到这一点。将您的部署过程修改为:

    1. 执行您自己的自定义 PowerShell 脚本以删除文件
    2. 将 Octopus 库中的脚本模块添加到相同的文件中。从Octopus Library 查看File System - Clean Directory

    【讨论】:

    • 这两个在我看来似乎有点落后。尤其是部署后的文件清理,这对我来说毫无意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多