使用chef管理多个存储库中的一组服务器端git挂钩

时间:2016-03-03 16:10:25

标签: chef githooks chef-recipe

以下是要求:

  1. 使用主厨启用/禁用服务器端挂钩
  2. 将所有/某些挂钩安装到一个或多个存储库
  3. 我在github中发现了各种钩子管理器,但它们都有局限性,或者没有与厨师集成。或者只是客户方。以下是我发现的一些钩子管理器:

    1. https://github.com/brigade/overcommit
    2. https://github.com/MatthieuBizien/git-hook-manager
    3. 或者厨师有git hooks,例如:

      1. https://github.com/mattpep/santoku
      2. 所以使用厨师,如果我可以设置一个食谱,在创建链接和更改权限/所有权的同时在git repos中部署文件,那也可以。

        GitLab Community Edition(CE)正用于远程存储库

1 个答案:

答案 0 :(得分:1)

管理钩子脚本几乎只是将脚本编写或链接到服务器端的每个git存储库。 http://doc.gitlab.com/ce/hooks/custom_hooks.html显示了在GitLab服务器上找到存储库的位置,然后使用templatelink资源添加/删除每个存储库上的挂钩。可能最终会看起来像这样:

Dir["/var/opt/gitlab/git-data/repositories/*/*.git"].each do |repo_path|
  directory File.join(repo_path, "custom_hooks") do
    owner "gitlab" # Maybe? Check what the existing permissions look like.
    mode "755"
  end

  template File.join(repo_path, "custom_hooks", "pre-receive") do
    source "pre-receive.erb"
    owner "gitlab" # Like above.
    mode "755"
  end
end