我们的代码使用git存储库来获取应用程序的版本(我们制作类似{git-tag}-build{git-hash}
的东西,我们正在使用Capistrano来部署我们的应用程序。
然而,使用Capistrano v3.0(由Jenkins运行),我发现git存储库已被删除。
我尝试做类似的事情:
namespace :environment do
desc 'Copies .git folder'
task :copy_git do
on roles(:app) do
within release_path do
execute :mkdir, ".git"
execute :cp, "-R * .git/"
end
end
end
end
但正如您可能理解的那样,它不起作用。
这是我得到的问题:
Could not get version string (no version file and
git描述failed)
。
有关如何解决此问题或如何在release_path中包含.git文件夹的任何想法?关于版本控制的任何其他想法都是可以接受的。
答案 0 :(得分:1)
缺少.git
文件夹的原因是部署是通过git archive | tar -xf
(简化)进行的。
部署后,release_path
包含一个名为REVISION
的文件,您可以在其中找到已部署代码的git哈希值。您可以使用它来获得准确的修订。
我通常建议您在代码库中添加一个变量来跟踪发布版本,例如: 1.0.0。这就是RubyGems模板的功能。这样,您的代码版本就不会与您的版本控制系统绑定。
希望这有帮助!