应用程序构建/部署工作流程
构建完成后,您使用什么来管理部署应用程序的工作流程?我不仅仅谈论在服务器上获取文件的行为,我谈论的是之后发生的事情。验证、测试、批准、迁移到生产、淘汰旧版本等。
示例:
- 构建完成
- 构建已部署到测试环境
- 测试已完成(手动步骤)
- 如果测试通过部署到 UAT 否则拒绝构建
- UAT 已完成(手动步骤)
- 如果 UAT 通过部署到 Prod 否则拒绝构建
- 淘汰之前在 Prod 中的构建
有没有可以管理长时间运行的构建工作流程的优秀应用程序?
更新
我还应该提到,我正在寻找实际实现工作流程的工具,而不仅仅是跟踪它所处的状态。(复制构建、更改构建状态、发送电子邮件、启动/停止服务、 ETC)
What do you use to manage the workflow of deploying your application after the build completes? I'm not talking about just the act of getting files on a server, I'm talking about what happens after that. Verification, testing, approval, migration to production, retiring old builds, etc.
Example:
- Build completes
- Build is deployed to a test environment
- Testing is completed (manual step)
- If testing passes deploy to UAT else reject build
- UAT is completed (manual step)
- If UAT passes deploy to Prod else reject build
- Retire build previously in Prod
Any good applications out there that can manage long running build workflows?
Update
I should also mention that I'm looking for tooling that actually implements the workflow and not just to track what state it's in. (Copy build, change build status, send emails, start/stop services, etc)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
此构建和发布系统是不同内容的混合体,因此按照您的列表,我将回复:
从这里开始,我们几乎使用 ant 和bash 脚本
我们发现更困难的事情是重新启动我们的应用程序服务器,因为我们在热部署方面没有良好的经验,但它是可行的仅使用 Maven、Ant 和 bash。
This build and release systems are a mixture of different stuff, so following your list I'll respond:
From here on, we do it pretty much with a mixture of ant and bash scripts
The harder thing we've found was to restart our application servers since we haven't had good experiences with hot deployments but it's doable with only maven, ant and bash.
许多公司都使用项目调度应用程序,例如 MS Project。
这是一个开源项目调度应用程序,Open Workbench,您可能会发现它很有用。它有局限性,但我用它来管理我的日程安排。
A lot of companies use a project scheduling application, like MS Project.
Here's an open source project scheduling application, Open Workbench, that you might find useful. It has limitations, but I've used it to manage my schedules.
ThoughtWorks Go 看起来很合适。我们目前使用 Maven,但仍只具备其功能的一小部分。
ThoughtWorks Go looks the part. We use Maven at the moment, but still at a fracion of its capabilities.
我真的不明白为什么不能使用 Ant 来完成此操作(http://ant.apache.org) 执行一些任务,每一步一个。由于这些事情的时间安排是手动的,并且每个环境一次只能有一份软件副本,因此除了编写工作流程并让人们参与之外,似乎没有什么可做的。
I don't really see why this couldn't be done using Ant (http://ant.apache.org) with some tasks, one per step. Since the timing of these things is manual and each environment can only have one copy of the software at one time, there doesn't seem to be much to do but code the workflow and letting folks at it.
如果您设法实现测试自动化(并且根据您使用的软件类型,没有理由不这样做),您应该能够使用任何持续集成软件。
问题是,每个阶段都可以写成任务,这些任务可以根据前一个情况的结果一个接一个地执行。
例如,我有一个 CruiseControl 的设置,它完全按照您在此处描述的方式进行,测试阶段运行一堆单元测试(c++/qt),并且 uat 内容是使用可测试性驱动程序编写的。
If you manage to automate your tests (and depending on what sort of software you do, there's no reason why not), you should be able to use any continuous integration software.
The thing is, each phase can be written down as tasks that can be executed one after an another depending of what was the result of previous case.
For example, i've had a setup of CruiseControl that does exactly what you describe here, testing phase was running bunch of unittests (c++/qt) and uat stuff was written with testability driver.
据我所知,没有一个系统可以自动完成您提到的所有任务。您需要编写一些脚本和测试来自动部署系统及其测试。然后你可以使用 CI 服务器将它们组合在一起。我的建议如下:
一旦您将这些事情自动化,您就可以使用持续集成服务器来安排这些任务或按需执行它们。我最熟悉 Bamboo (我为 Atlassian 工作),但我确信CruiseControl 和 Hudson 也有类似的功能。以下是您在 Bamboo 中执行此操作的方法:
然后,您可以执行相同的操作并为生产部署设置构建,但可能只能手动触发并具有更严格的权限。
As far as I know, there is no single system that will automatically do all the tasks you mention. You need to write some scripts and tests to automate the deployment of your system and its testing. Then you can use a CI server to put it together. Here's what I'd suggest:
Once you have these things automated, you can use a continuous integration server to schedule these tasks or do them on demand. I'm most familiar with Bamboo (I work for Atlassian), but I'm sure CruiseControl and Hudson have similar features. Here's how you'd do it in Bamboo:
You'd then do the same and set up a build for your production deployment, but probably with only manually triggering and with more restrictive permissions.
我使用了一个名为 Hudson 的基于网络的开源工具,并且对它非常满意。它非常擅长管理构建,并且与 SVN 和 ant 具有出色的集成。唯一需要注意的是您需要将其托管在您自己的服务器上。
I've used a web-based open source tool called Hudson and have been very happy with it. It's very good at managing builds and has excellent integration with SVN and ant. The only caveat is that you need to host it on your own server.
我们用的是一个名叫阿利斯泰尔的威尔士老家伙。就像魅力一样。
We use this old Welsh guy called Alistair. Works like a charm.