使用GitHub API和脚本检索GitHub组织中每个回购的所有管理员的报告



目前,我看不到任何简单的方法来生成一个报告,该报告包含GitHub组织中每个回购的管理员列表。下面的例子对我来说非常适合检索单个回购的管理员名单:

curl https://my-github-url/api/v3/repos/my-org/my-repo/collaborators?per_page=100 
-H "Authorization: Token my-valid-token" | 
jq '[ .[] | select(.permissions.admin == true) | .login ]'

有没有办法对该组织下的所有转发进行迭代,然后生成一个奇特的报告,可能像html表格报告或excel类型的

您可以使用GraphQL API来减少请求数量,方法如下:

{
organization(login: "your-org") {
repositories(first: 100) {
nodes {
nameWithOwner
collaborators(first: 100) {
totalCount
edges {
permission
node {
login
name
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
}
}

它给出:

{
"data": {
"organization": {
"repositories": {
"nodes": [
{
"nameWithOwner": "Your-Org/Your-Repo",
"collaborators": {
"totalCount": 18,
"edges": [
{
"permission": "ADMIN",
"node": {
"login": "johndoe",
"name": "John Doe"
}
},
............................
]
}
}
]
}
}
}
}

使用bash、curl和jq的示例:

#!/bin/bash
token="YOUR_TOKEN"
org="YOUR_ORG"
query='{
organization(login: "'$org'") {
repositories(first: 100) {
nodes {
nameWithOwner
collaborators(first: 100) {
totalCount
edges {
permission
node {
login
name
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
}
}
'
curl -s -H "Authorization: token $token" 
-H  "Content-Type:application/json" 
-d '{ 
"query": "'"${query//[$'n|rn']}"'"
}' https://api.github.com/graphql | jq '.data.organization.repositories.nodes[] | 
{
repo: .nameWithOwner, 
users: [
.collaborators.edges[] | 
select(.permission == "ADMIN") | 
.node
]
}'

如果你有100多个回购或100多个合作者,你需要管理分页

最新更新