github - 在组织级别启用 Github 中的分支保护规则
问题描述
是否可以在 Github 的组织级别启用分支保护规则,以便该组织的所有存储库都为应用的分支继承这些规则。现在,在每个回购的基础上为同一组分支启用这些相同的规则集确实很麻烦。
解决方案
取自@Ashley 的答案,对其进行了一些更新,稍作更改以反映当前 Github 的 API URL,并添加了使用GITHUB_ORG
和GITHUB_ACCESS_TOKEN
环境变量的自定义。
require "json"
require "logger"
$org = ENV["GITHUB_ORG"]
$token = ENV["GITHUB_ACCESS_TOKEN"]
LOGGER = Logger.new(STDOUT)
def run(cmd)
LOGGER.debug("Running: #{cmd}")
output = `#{cmd}`
raise "Error: #{$?}" unless $?.success?
output
end
def repos(page = 1, list = [])
cmd = %Q{curl -s -u dummy:#{$token} https://api.github.com/orgs/#{$org}/repos?page=#{page}}
data = JSON.parse(run(cmd))
list.concat(data)
repos(page + 1, list) unless data.empty?
list
end
repos.each do |repo|
p(repo["name"])
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://api.github.com/repos/#{$org}/#{repo["name"]}/branches/master/protection")
request = Net::HTTP::Put.new(uri)
request.basic_auth("dummy", $token)
request["Accept"] = "application/vnd.github.luke-cage-preview+jso"
request.body = JSON.dump({
"required_status_checks" => {
"strict" => true,
"contexts" => []
},
"enforce_admins" => true,
"required_pull_request_reviews" => {
"dismiss_stale_reviews" => true
},
"restrictions" => nil
})
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
p(response)
end
推荐阅读
- android - 创建“重定向”身份验证活动
- wordpress - 增加 Google Cloud 中的上传文件大小限制
- docker - UUID 的默认 Docker 参数
- postgresql - PostgreSQL - 创建随机百分比?
- javascript - 在 jquery ajax 中使用 django url 标签
- r - 使用 R 包“Rblpapi”从 Bloomberg 提取投资组合数据
- python - 有条件的前置填充 pandas DataFrame
- python - 如何划分包含用分号分隔的 int 和 string 值的列
- node.js - Mongoose 删除文档引用
- grafana - 将仪表板添加到向下钻取的内容