目前,我看不到任何简单的方法来生成一个报告,该报告包含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多个合作者,你需要管理分页