【问题标题】:nuget feeds and promotionsnuget 提要和促销
【发布时间】:2013-07-18 23:12:26
【问题描述】:

我已经读完了 Pro Nuget 这本书,我认为将它用于我们的依赖项会比我们当前的方法更好。此外,您可以构建应用程序部署包以将您的构建部署到各种环境,我们也在寻求更好地自动化。

其中一个想法是拥有多个 Nuget 提要;一个 ci 提要,每个成功的集成都会发布一个包,一个 qa 提要,您只发布您希望 qa 测试的版本,然后是一个发布提要,您只从他们成功测试的 qa 提要中复制包。

我喜欢这个想法,但建议通过以 -alphaXXXX 或类似结尾的版本将 ci 构建标记为预发布。但是,如果我这样做,我需要在升级到 qa 提要期间删除该名称。我认为您必须修改包才能做到这一点,但是 Nuget 包的部分吸引力在于,一旦构建,您就不会更改它们

另一个想法是,由于我们主要在主干中工作,所以当我创建 rc 分支时,我们的构建过程将停止添加版本的预发布部分。这似乎可行,然后从 qa 推广到发布提要将是一个简单的包副本。

有人在做这种方法吗?这是推荐的方法吗?我错过了什么吗?我在谷歌上搜索过,但没有发现很多关于这种方法的细节的讨论。

【问题讨论】:

    标签: .net nuget packaging automated-deployment


    【解决方案1】:

    我是这本书的作者之一,所以我希望你喜欢它!我们正在编写包含大量新内容的第二版,并且正在处理这个特殊案例。

    澄清一下,将 CI --> QA --> PROD 场景设置为示例包推广流程:您可以根据需要创建自己的。

    您的观点是正确的:包装促销不应要求对包装或其内容进行任何修改。这实际上意味着在将包推广到另一个提要时,甚至不会重建包内的二进制文件。此规则的唯一例外是软件包预发布版本,可以调整或删除。注意:推广时语义版本应保持不变!

    这是http://www.MyGet.org 的核心功能:这里是它的文档http://docs.myget.org/docs/reference/package-sources(场景:向上游推送包)。

    在此功能中应用了上述原则,我们还负责提要安全/api 密钥。 如果您不使用 MyGet,那么您需要自己执行此操作。合乎逻辑的步骤是:

    1. 从源文件下载包
    2. 可选择更改预发布标签(手动?)
    3. 将包推送到目标提要

    许多开源项目都在使用这种方案,在 MyGet.org 上使用 CI 源,然后将上游推送到 NuGet.org。上游包源可以是任何其他 NuGet 源(例如 Chocolatey.org 库、Resharper 插件库、另一个 MyGet.org 源......)。

    【讨论】:

    • 我非常喜欢这本书,它给了我很多想法,我希望通过试验来改进我们当前的流程。我知道要发布的 ci 到 qa 是一个例子,但我认为它对我们很有效。作为后续问题,假设我提示 qa 的应用程序依赖于另一个包含业务逻辑层的包,该包始终与应用程序同时发布。我假设我必须递归地提升应用程序依赖项(我们也构建的那些,我们不使用 beta 3rd 方库)。期待第二版!
    • 太棒了!是的,确实,如果你将它们一起发布,你还需要提升包的依赖项。
    • @XavierDecoster 你能解释一下#2 的工作原理吗?我正在尝试在 VSTS 中设置此流程,而不是在 MyGet 中。是否有支持从包中删除预发布标签的命令,或者我是否必须解压缩包、修改 nuspec 文件并重新打包?似乎应该有一个内置的 nuget 命令。
    • @ChristopherHaws 这是 MyGet 独有的功能,在 nuget 或 vsts 中没有开箱即用的支持。
    • 八年后,我遇到了一个非常相似的问题:stackoverflow.com/q/69575803/556078
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多