我如何才能将预发布版本升级到生产环境,并嵌入新版本,而无需重新构建? [英] How can i promote a pre-release build to production, and have the new version embedded, without a rebuild?
本文介绍了我如何才能将预发布版本升级到生产环境,并嵌入新版本,而无需重新构建?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
八年后,我遇到了与nuget feeds and promotions相同的问题!
在这种情况下,我说的更笼统;我们使用ProGet作为我们的包管理器,并且在包升级过程中有块块、通用包,甚至一些码头容器需要考虑。
所以,假设我们在其中一个想法是有几个Nuget提要;一个ci提要,其中每个成功的集成都发布一个包;一个Qa提要,您只发布您希望QA测试的版本,然后是一个Release提要,其中您只复制他们成功测试的Qa提要中的包。
ci
提要中有一个可以工作的构建,它的版本是1.2.3-ci-xyz
。我们希望将其推广到QA提要,而无需重新构建,并将其重新打包为1.2.3-rc-1
。该包通过了质量保证,并准备好升级到生产饲料中,不需要重建,并可以运往生产。它应该以1.2.3
的形式发货。(对吗?)
问题是,如果我们不进行任何重新构建,包二进制文件仍将具有版本1.2.3-ci-xyz
。它将显示在应用程序中显示或查询版本的任何位置。
这就是我被卡住的地方。这里的合适图案是什么?只要我们知道是什么版本,发货的版本重要吗?
- 意思是,我们将
1.2.3-ci-xyz
从较低的Feed提升到较高的Feed,而不会使用不同的版本重新打包? - 包
1.2.3
包含二进制文件1.2.3-ci-xyz
是不是不正确? - 我们是否总是使用下一个3位数字构建,而忘记ci/rc后缀?
推荐答案
我将通过内部支持渠道分享此答案:)
这是我们(Inedo)通常在库中处理此问题的方式。简短的答案是:
- 我们将程序集版本设置为Major.Minor.Patch
- 我们将程序集文件版本设置为Major.Minor.Patch.Build
- 我们将包版本设置为Major.Minor.Patch-ci.Build(然后重新打包为Major.Minor.Patch-rc.Build,然后重新打包为Major.Minor.Patch)
- 我们还使用汇编信息版本来显示友好版本(例如:版本6.0.0(Build 36-V6))
这使我们无需重新构建即可重新打包。我们还将在产品构建期间检测这些预发布依赖项,并防止它们发布到生产中。您可以查看我们的ProGet V6版本作为示例:ProGet 6.0.0 Build 36。
我觉得较长的答案在我们的博客帖子Best Practices for Versioning NuGet Packages in the Enterprise中得到了很好的回答。
这篇关于我如何才能将预发布版本升级到生产环境,并嵌入新版本,而无需重新构建?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文