Capistrano 3删除.git文件夹

时间:2015-10-05 21:51:41

标签: git jenkins capistrano capistrano3

我们的代码使用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文件夹的任何想法?关于版本控制的任何其他想法都是可以接受的。

1 个答案:

答案 0 :(得分:1)

缺少.git文件夹的原因是部署是通过git archive | tar -xf(简化)进行的。

部署后,release_path包含一个名为REVISION的文件,您可以在其中找到已部署代码的git哈希值。您可以使用它来获得准确的修订。

我通常建议您在代码库中添加一个变量来跟踪发布版本,例如: 1.0.0。这就是RubyGems模板的功能。这样,您的代码版本就不会与您的版本控制系统绑定。

希望这有帮助!