背景
我的团队一直在使用Jenkins为Grails应用程序运行持续集成(CI)。我们正试图通过设置部署管道并将按钮部署到多个环境(Dev,Itg,Prod)来接近Continuous Delivery。我们已经尝试使用Jenkins Tomcat插件来部署我们的代码,但是在Tomcat上偶尔会遇到PermGen问题,并且必须在部署后手动重新启动它。
问题:
答案 0 :(得分:2)
答案 1 :(得分:1)
我们使用grails,tomcat和弹性负载均衡器,并通过AWS基础架构进行脚本化实例启动/配置/部署。 S3存储桶包含我们的war文件,它由我们的Jenkins服务器放置在我们配置的插件的一部分。这是由内部版本号和Jenkins作业名称版本化的,因此我们为每个环境都有一个。厨师脚本将我们的依赖关系和战争拉入实例并完成所有实际工作,而我们的Jenkins运行编排脚本循环并在每个成功阶段休眠,直到新实例完全启动并通过负载均衡器运行状况检查,此时我们停止旧实例(负载平衡器耗尽新的实例)。如果出现任何故障或超时,我们会在关闭新实例后失败Jenkins作业。为了遵循这种方法,我们在应用程序中没有共享状态,我们通过grails spring安全集成使用memcached(elasticache)作为会话存储。
答案 2 :(得分:0)
从我的角度来看(公认有偏见)Jenkins并不打算进行部署。它没有这样设置。如果剪刀不是为了剥橙子,Jenkins不是正确的部署工具。但它无论如何都能胜任。