我正在使用jenkins从github存储库不断构建网站前端代码,将其打包到tar存档中并将其发布到S3存储桶。 Jenkins构建创建名为此FrontEnd-122.tgz的文件,其中122是内部版本号。
我使用以下方法将应用程序部署到服务器上:
deploy_version = node['my-app']['build-number']
deploy_from = "http://mybucket.com/FrontEnd-#{deploy_version}.tgz"
tar_extract "#{deploy_from}" do
target_dir '/usr/local/site/FrontEnd'
creates '/usr/local/site/FrontEnd/index.php'
tar_flags [ '--strip-components 1' ]
end
这一切都很好,但是我必须手动更新节点属性my-app / build-number。这适用于QA和生产部署。
我想要的是拥有一个快照部署VM,我将部署最新代码,以便与selenium和朋友进行进一步测试。但是,要做到这一点我需要 有一种方法可以让上面的食谱找出最新的构建号是什么,并从那里进行部署。你有什么建议吗?
答案 0 :(得分:1)
棘手的一个,因为你需要一个厨师机制来确定存储在S3中的最新版本。
据推测,您将代码存储在版本控制系统中,如subversion或git?使用厨师deploy resource是否可行?让厨师从您的主干或主分支中提取网站代码,以进行测试。
另一种选择是使用理解“快照”概念的二进制存储库管理器。请查看Nexus,Artifactory和Archiva等产品。然后,您可以将S3用于备份和分发区域,以用于您站点的已批准和已发布的副本。
答案 1 :(得分:0)
所以,我用愚蠢的方式来解决这个问题。除了将版本化存档放入S3存储桶之外。我也使用'FrontEnd-Latest'之类的名称推送相同的档案。我还修改了cookbook以使用版本参数。登台服务器的版本参数设置为“最新”,生产服务器的参数设置为任何被认为稳定的版本。