有几种 CI 工具。其中我最喜欢的是 Hudson-ci。其他是 Continuum 和 Cruise 控制。但我认为 Hudson 是最通用且易于使用的工具,并且因为它具有社区驱动的插件,所以您可以很容易地找到适合 git 和 ruby on Rails 应用程序的插件。
What is the best set of practices
I am assuming you are trying to be agile here. You trying to derive a set of best practices for deployment is a little scary. For that matter, any sort of list of best practices for an Agile Team is scary. If you carefully study Agile, you will realize that it requires the Team to inspect and adapt and continuously improve, the moment you think that your Team has found the "best practices", you by default agree that you can stop improving and hence stop inspecting, adapting, and improving. Mike Cohn, author Agile Estimating and Planning, suggests that an agile team should not come up with a set of Best practices, instead it should continuously improve, by inspecting and adapting.
To give you some constructive feedback, here are some of the practices our Scrum Team followed, which we ourselves figured out by inspecting and adapting our own deployment process. I will add information about our source code checking in practices along with deployment as well.
Every time a developer checked in code, Hudson-ci used scm poll trigger and automatically built and deployed code to a development enviroment. It sent appropriate notifications of success or failure via email.
There was a nightly build in the development environment which was triggered by Hudson-ci automatically every night.
After the features were ready and preliminarily tested in Dev environment, the QA on the team triggered a Hudson-ci build and deploy to the integration server, where the features could be integration tested. The Integration environment was an exact replica of the Production environment.
Production deployment were usually done using Hudson again based on the release plan.
and tools that could support me in the continuous deployment of an web application?
There are several CI tools out there. My favorite out of the lot is Hudson-ci. Others are Continuum and Cruise control. But I think Hudson is the most versatile and easy to use tool, and because it has community driven plugins it will be very easy for you to find a plugin for git, and ruby on rails apps to fit in.
IMVU is the poster child for continuous deployment and they got their by following the rule of "if we are sure we didn't break anything we need to deploy immediately." They now have very impressive automation around their process, but it started with that rule.
I think some of the ingredients that help with continuous deployment include:
always have a working build. this means continuous integration running automated unit tests on commit, and responding immediately to any failures. at IMVU they go as far as automatically reverting commits that break the build
extensive functional tests. this is what gives you confidence that you haven't broken anything. these tests tend to be slow so you'll need a strategy to keep the test time down, such as running tests in parallel across many machines or using a service like SauceLabs.
automated deployments. never deploy manually. never change configuration manually. deploy to all environments using the same technology.
When you say continuous deployment most people think of going automatically out to production without human intervention. You can stop short of that -- push-button production deployments -- and still get a lot of value. We (urbancode, makers of AnthillPro) help a lot of customers put these kinds of elements in place. Few people do the automatic production deploy, but automated deployment is helpful for everyone.
发布评论
评论(2)
我假设您想在这里保持敏捷, ?您试图导出一组最佳部署实践有点可怕。就此而言,敏捷团队的任何最佳实践列表都是令人恐惧的。如果你仔细研究敏捷,你会发现它需要团队检查、适应、不断改进,当你认为你的团队找到了“最佳实践”的那一刻,你就默认同意你可以停止改进,从而停止检查、适应和改进。 《敏捷估算和规划》一书的作者 Mike Cohn 建议,敏捷团队不应该提出一套最佳实践,而应该通过检查和适应来不断改进。
为了给您一些建设性的反馈,以下是我们的 Scrum 团队遵循的一些实践,这些实践是我们自己通过检查和调整我们自己的部署流程得出的。我还将添加有关我们的源代码检查实践以及部署的信息。
每次开发人员签入代码时,Hudson-ci 都会使用 scm poll 触发器并自动构建代码并将其部署到开发环境中。它通过电子邮件发送适当的成功或失败通知。
开发环境中有一个夜间构建,由 Hudson-ci 每晚自动触发。
有几种 CI 工具。其中我最喜欢的是 Hudson-ci。其他是 Continuum 和 Cruise 控制。但我认为 Hudson 是最通用且易于使用的工具,并且因为它具有社区驱动的插件,所以您可以很容易地找到适合 git 和 ruby on Rails 应用程序的插件。
I am assuming you are trying to be agile here. You trying to derive a set of best practices for deployment is a little scary. For that matter, any sort of list of best practices for an Agile Team is scary. If you carefully study Agile, you will realize that it requires the Team to inspect and adapt and continuously improve, the moment you think that your Team has found the "best practices", you by default agree that you can stop improving and hence stop inspecting, adapting, and improving. Mike Cohn, author Agile Estimating and Planning, suggests that an agile team should not come up with a set of Best practices, instead it should continuously improve, by inspecting and adapting.
To give you some constructive feedback, here are some of the practices our Scrum Team followed, which we ourselves figured out by inspecting and adapting our own deployment process. I will add information about our source code checking in practices along with deployment as well.
Every time a developer checked in code, Hudson-ci used scm poll trigger and automatically built and deployed code to a development enviroment. It sent appropriate notifications of success or failure via email.
There was a nightly build in the development environment which was triggered by Hudson-ci automatically every night.
There are several CI tools out there. My favorite out of the lot is Hudson-ci. Others are Continuum and Cruise control. But I think Hudson is the most versatile and easy to use tool, and because it has community driven plugins it will be very easy for you to find a plugin for git, and ruby on rails apps to fit in.
IMVU 是持续部署的典范,他们遵循“如果我们确定没有破坏任何东西,我们需要立即部署”的规则。他们现在在流程中拥有非常令人印象深刻的自动化,但它是从这条规则开始的。
我认为有助于持续部署的一些要素包括:
当您说到持续部署时,大多数人会想到自动投入生产而无需人工干预。您可以停止这种操作——按钮式生产部署——但仍然可以获得很多价值。我们(urbancode,AnthillPro 的制造商)帮助许多客户将这些类型的元素放置到位。很少有人进行自动生产部署,但自动化部署对每个人都有帮助。
杰夫
IMVU is the poster child for continuous deployment and they got their by following the rule of "if we are sure we didn't break anything we need to deploy immediately." They now have very impressive automation around their process, but it started with that rule.
I think some of the ingredients that help with continuous deployment include:
When you say continuous deployment most people think of going automatically out to production without human intervention. You can stop short of that -- push-button production deployments -- and still get a lot of value. We (urbancode, makers of AnthillPro) help a lot of customers put these kinds of elements in place. Few people do the automatic production deploy, but automated deployment is helpful for everyone.
Jtf