【问题标题】:Capistrano 3 removing .git folderCapistrano 3 删除 .git 文件夹
【发布时间】:2015-10-05 21:51:41
【问题描述】:

我们的代码使用 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 andgit describefailed).

关于如何解决这个问题或如何在 release_path 中拥有 .git 文件夹的任何想法?任何其他关于版本控制的想法都是可以接受的。

【问题讨论】:

    标签: git jenkins capistrano capistrano3


    【解决方案1】:

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

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

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

    希望这会有所帮助!

    【讨论】:

    • 很好的答案。不知道 REVISION 文件的存在。我最终在我们所拥有的和您建议的之间进行了混合。一方面,我们实现了静态版本控制(就像 RubyGems 一样),但我们仍然需要构建,所以我设法使用了 REVISION 文件中提供的哈希。所以它看起来像 {static, ie 1.0.4}-build{REVISION}。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2021-08-30
    • 1970-01-01
    • 2022-09-28
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多