Gitlab:一次更改用户在多个项目中的角色

时间:2017-06-19 11:58:29

标签: gitlab gitlab-8

我可以一次更改多个项目中特定用户的角色吗?如果是,怎么样?

我的用户在超过75个项目中的角色是“Reporter”。我想在所有项目中将角色更改为“开发人员”。我可以用最小的努力来实现吗?

1 个答案:

答案 0 :(得分:2)

您可以使用以下Gitlab API编辑项目现有成员的访问权限:

PUT /projects/:id/members/:user_id?access_level=XX

我没有找到任何API来为User API中的特定用户请求项目。但是您可以请求所有项目的列表,提取ID并调用edit member API

你能做的是:

  • 请求用户API获取目标用户名的用户ID:

    favIcon
  • 请求项目列表并在列表中提取ID:

    https://gitlab.com/api/v4/users?private_token=YOUR_TOKEN&username=someuser
    
  • 使用您选择的访问级别为每个项目调用编辑成员API:

    https://gitlab.com/api/v4/projects?private_token=YOUR_TOKEN&page=1&per_page=1000
    

https://gitlab.com/api/v4/projects/<project_id>/members/<user_id>?private_token=YOUR_TOKEN&access_level=10 字段可以是these中的任何一个:

access_level

这是一个Bash脚本,它将使用10 => Guest access 20 => Reporter access 30 => Developer access 40 => Master access 50 => Owner access # Only valid for groups johndoe为访问级别为30(开发人员访问权限)的用户更新用户所在的所有项目,此脚本还使用jq json解析器:

username

请注意,每个请求(包括指定用户不是成员的项目)都会产生#!/bin/bash GITLAB_DOMAIN=gitlab.com GITLAB_PORT=443 GITLAB_BASE_URL=https://$GITLAB_DOMAIN:$GITLAB_PORT PER_PAGE=1000 PRIVATE_TOKEN=YOUR_TOKEN ACCESS_LEVEL=30 USERNAME=johndoe user_id=$(curl -s "$GITLAB_BASE_URL/api/v4/users?private_token=$PRIVATE_TOKEN&username=$USERNAME" | jq '.[].id') echo "user_id : $user_id" projects=$(curl -s "$GITLAB_BASE_URL/api/v4/projects?private_token=$PRIVATE_TOKEN&page=1&per_page=$PER_PAGE" | jq '.[].id') while read -r project; do status=$(curl --write-out '%{http_code}' -s -o /dev/null -X PUT "$GITLAB_BASE_URL/api/v4/projects/$project/members/$user_id?private_token=$PRIVATE_TOKEN&access_level=$ACCESS_LEVEL") if [ "$status" == "200" ]; then echo "right change to $ACCESS_LEVEL for project : $project" fi done <<< "$projects"