Php 使用哈德逊将建筑与部署分开

Php 使用哈德逊将建筑与部署分开,php,continuous-integration,hudson,phing,Php,Continuous Integration,Hudson,Phing,我们已经开始使用哈德逊,目前的工作流程是: 本地签出>代码>运行测试>更新>运行测试>提交 Hudson只是坐在那里,直到我们实例化一个构建。然后: 本地签出>运行Phing脚本 然后是Phing脚本: svn导出最新版本>运行测试(如果成功)>生成报告等>将导出>scp压缩到生产服务器>。。做魔术使网站活 这一切都很好,但它并没有真正给我们提供任何类型的“分段”QA的能力,每个构建都会构建repo head修订版。理想情况下,我们希望Hudson轮询或使用提交后挂钩构建每个提交,并: 本地签出

我们已经开始使用哈德逊,目前的工作流程是:

本地签出>代码>运行测试>更新>运行测试>提交

Hudson只是坐在那里,直到我们实例化一个构建。然后:

本地签出>运行Phing脚本

然后是Phing脚本:

svn导出最新版本>运行测试(如果成功)>生成报告等>将导出>scp压缩到生产服务器>。。做魔术使网站活

这一切都很好,但它并没有真正给我们提供任何类型的“分段”QA的能力,每个构建都会构建repo head修订版。理想情况下,我们希望Hudson轮询或使用提交后挂钩构建每个提交,并:

本地签出>运行Phing任务以运行测试,如果成功,则生成报告等

然后能够手动实例化一个自动部署(通过Phing任务)到每个特定构建的“暂存QA环境或生产”。并不是每个提交都将部署到QA


这个工作流程是否可以通过Hudson实现,或者我们需要在之后手动运行部署Phing任务。

我不完全清楚您想要实现什么,但我想知道您是否正在使用插件?也许您想要的东西目前无法通过Hudson实现,可能需要更改您的开发过程s使之成为可能。

我将构建/测试作业(job1)和部署作业(job2)分开。job1在每次提交后在主干上运行(Hudson轮询,但提交后钩子也会运行)。它还存档构建工件。job2将手动启动。它从job1获取构建编号作为构建参数(我喜欢运行参数)并将工件从job1下载到它自己的工作区中。它运行部署。在您的情况下,我将添加另一个参数(选择参数)以确定要部署到什么环境


使用description setter插件,您可以打印出job1和环境的运行编号,并且可以在作业历史记录中轻松查看何时将构建部署到了什么环境。

我最终做了类似于Peter Schuetze建议的事情。然而,我只使用了唯一的作业。我使用了3个构建参数,部署(bool)、环境(选择)和修订(文本)。然后,我将Phing脚本更改为仅在deploy参数为true时进行部署,在这种情况下,它将指定的修订版部署到指定的环境中。默认情况下,deploy为false,修订版为head,环境为staging。现在,当Hudson轮询svn时,它会看到deploy参数为false,并绕过部署任务。

I最后做了类似的事情。然而,我只使用了唯一的作业。我使用了3个构建参数:部署(bool)、环境(choice)和修订(text)。然后,我将Phing脚本更改为仅在deploy参数为true时进行部署,在这种情况下,它将将指定的修订版部署到指定的环境。默认情况下,deploy为false,修订版为head,环境为staging。现在,当Hudson轮询svn时,它会看到deploy参数为false,并绕过部署任务。我t同样,我是Jenkins/hudson的新手,如果可能的话,你能提供更多的技术细节吗?你在哪里挣扎?首先创建一个构建工作。这应该给你一些实践经验来提出更具体的问题(可能是自己的问题,而不是对答案的评论)。我创建了一个“多配置项目名称”现在只添加了一个参数“environment”,有两个选项:dev和prodA多配置项目用于同时运行多个测试。例如,您希望为Windows、Linux和您喜爱的UNIX运行构建。它将为每个配置选项启动一个构建。您可能想要的是一个带有参数的自由风格软件项目。然后可以运行dev或prod部署。