使用 Chef 跨多个存储库管理一组服务器端 git 挂钩
Manage a set of server side git hooks across multiple repositories using chef
所以这是要求:
- 使用 chef 启用/禁用服务器端挂钩
- 安装 all/some 个挂钩到一个或多个存储库
我在github 中找到了各种hook manager,但它们都有局限性,或者没有与chef 集成。或者只是客户端。以下是我发现的一些挂钩管理器:
或者有 git 个厨师挂钩,例如:
所以使用 Chef,如果我可以设置一个食谱,在创建链接和更改 permissions/ownership 的同时跨 git 存储库部署文件,那也可以。
GitLab 社区版 (CE) 用于远程存储库
管理钩子脚本几乎就是将脚本编写或链接到服务器端的每个 git 存储库。 http://doc.gitlab.com/ce/hooks/custom_hooks.html 显示在您的 GitLab 服务器上找到 repos 的位置,然后使用 template
或 link
资源来 add/remove 每个 repo 上的挂钩。最终可能看起来像这样:
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
所以这是要求:
- 使用 chef 启用/禁用服务器端挂钩
- 安装 all/some 个挂钩到一个或多个存储库
我在github 中找到了各种hook manager,但它们都有局限性,或者没有与chef 集成。或者只是客户端。以下是我发现的一些挂钩管理器:
或者有 git 个厨师挂钩,例如:
所以使用 Chef,如果我可以设置一个食谱,在创建链接和更改 permissions/ownership 的同时跨 git 存储库部署文件,那也可以。
GitLab 社区版 (CE) 用于远程存储库
管理钩子脚本几乎就是将脚本编写或链接到服务器端的每个 git 存储库。 http://doc.gitlab.com/ce/hooks/custom_hooks.html 显示在您的 GitLab 服务器上找到 repos 的位置,然后使用 template
或 link
资源来 add/remove 每个 repo 上的挂钩。最终可能看起来像这样:
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