促进构建到不同的环境

我希望能够通过其环境促进构建的最佳方式提供一些指导。

我们有3个环境,DEV,STAGING,PROD。

DEV Jenkins构建运行在持续集成设置中,当代码签入到Subversion时,Jenkins将运行一个新构建(清理,编译,测试和部署)。

棘手的一点是当涉及到STAGING和PROD。

这个想法是能够手动将一个成功的DEV构建推广到ST​​AGING。 STAGING构建会检查DEV的SVN修订版编号,构建,测试,部署到staging并最终在SVN中创建一个分支。

最后,发布经理可以手动将STAGING构建推广到PROD。 PROD构建将从前一个STAGING构建中检出分支,将其部署到PROD并将该分支标记为发布。

我尝试过使用Promotion Builds Plugin和Paramterized Trigger Plugin的组合,但没有运气。 Subversion版本号似乎不会在DEV构建到STAGING构建之间传递。

有没有人对他们的流程有任何指导以促进通过多种环境构建?


在这种情况下,为什么你需要回去并在svn中标记分支? 我们不使用svn,而是使用tfs,当Hudson / Jenkins获取代码时,它检索到的变更集编号位于构建日志中。 所以我们知道这个版本来自哪个代码,并且可以随时回复它。

然后,我们使用Hudson推动从环境到环境的构建,源代码管理系统不需要知道代码的部署位置。


另一种方法是使用Jenkins提供的Artifact存储以及Copy Artifact插件。

  • 构建完成后,您可以指示Jenkins将其保存为压缩的zip / tar.gz或作为应用程序包(jar / war)
  • 触发下游作业并使用复制工件从上游作业中检索记录的工件(或使用参数化版本)
  • 根据需要部署/解压缩工件 - 构建shell脚本/ maven deploy?
  • 使用与步骤1中创建的相同的源/二进制文件重新测试应用程序
  • 根据需要重复PROD
  • 这种方法将允许您指定工件,因此Jenkins会在UI中将构建链接在一起,并允许更正式的签署。


    如果绝对需要存储SVN版本ID,那么请在您的DEV作业中添加一个构建步骤,将其复制到一个文件中。 像这样的东西:

    echo %SVN_REVISION%>revision.ini
    

    或者类似这样的东西:

    echo MY_SVN_REVISION=%SVN_REVISION%>revision.ini
    

    然后是工件revision.ini。 在执行STAGING构建时,使用Copy Artifact插件(如前一个用户所述)来检索特定于构建的revision.ini文件并将其加载到变量中。 然后在命令行中使用该变量调用“svn”来构建标记。

    链接地址: http://www.djcxy.com/p/53717.html

    上一篇: Promoting a build to different environments

    下一篇: mysql insert after delete fails because of "duplicate entry"