- 周边有十几服务:两场战争和JAR(与狸包装上运行)
- 每个服务被部署到发展,分段和生产:环境使用不同的web.xml文件,Spring配置文件(在Tanuki包装器上设置)...
- 我们希望将工件存储在AWS S3上,以便我们的EC2实例可以轻松获取这些工件:某些服务在多台机器上运行,AutoScaling实例在引导,开发后自动获取最新版本一旦被更新牛逼的文物应自动进行部署,...
我们当前的部署过程是这样的:
- 詹金斯构建并测试我们的代码
- 一旦我们很满意,我们做Artifactory plugin(仅用于生产部署;开发和分期文物都是基于普通詹金斯版本)
- 我们使用Promoted Builds plugin有3种不同的推广工作为每个项目(开发,分期,生产)建神器所希望的环境,然后把它上传到S3
这个工程主要是OK,但是我们遇到了多烦恼:
- 的Artifactory的插件无法标签和源代码更新,由于未能提交到库来(这可能是具体到CloudBees ,我们的Jenkins提供商)。没关系 - 我们可以手动做到这一点。
- Jenkins S3 plugin无法正确使用多个上传目标(我们正在为每个环境使用一个目标) - 当您保存配置时,它会尝试上传到所有目标并复制设置:JENKINS-18563。没关系 - 我们正在使用一个shell脚本进行上传,工作正常。
- 升级作业有时会失败,因为它们可以在与原始构建不同的实例上运行 - 导致失败(构建是因为文件丢失)或过时构建(因为正在使用旧版本)。再次,这可能是由于CloudBees提供的特定设置而发生的。这可以通过再次运行构建来解决,希望这次推广作业可以在其构建的同一实例上运行(这是我理解中的纯粹运气)。
我们已经被告知由CloudBees的运行推广工作前做一个码结账,因为工作空间是短暂的,它不能保证它的存在,或者它是最新的。但是,升级作业中的shell脚本似乎不符合其他StackOverflow thread中所述的环境变量,即使它们链接在textarea字段下方。所以svn checkout ${SVN_URL} -r ${SVN_REVISION}
不起作用。
我敢肯定,这可以通过一些解决方法来解决,但肯定我必须做一些非常错误的事情。我假设许多其他人都以类似的方式部署他们的应用程序,并且必须有更好的方式 - 没有各种解决方法和烦恼。
感谢任何指针和阅读一切到最后!
你能否详细说明为什么你的Artifactory不能提交源代码管理? – JBaruch
看起来像提交和标记是好的,毕竟它只是缺少最新快照的更新。我已经创建了一个单独的问题,因为这只是一个小问题,而不是原始问题的核心:http://stackoverflow.com/questions/17921881/jenkins-artifactory-plugin-updating-to-the-latest -snapshot-on-git – xeraa