生产实践:
使用shell脚本更改Gitlab所有用户创建项目限制数
学习技巧:
curl使用、双层for循环、shell数组、gitlab api调用
脚本内容:
最近好几个开发同事反馈gitlab不能创建仓库,没有创建按钮,一看原来是projects_limit数到限制了,gitlab默认是每个用户创建10个项目,看了下生产的配置,设置的是20个不够用,修改默认配置为100个,但是之前创建的用户限制数设置是不会变的,线上1600多个开发用户难道都得手动一个个点进去修改?生产环境改库风险太大不太可行,想想应该能通过gitlab api来搞,实现思路是先把所有用户的id拿出来,通过用户id修改projects_limit。
#!/bin/bash ############################################################################## # $Name: op_gitlab.sh # $Version: v1.0 # $Function: Gitlab change all users project limit # $Author: Zhihe An # $Copyright (c) https://chegva.com # $Create Date: 2019-02-26 ############################################################################## # 执行前请先安装jq # gitlab默认分页显示20个元素,最大一页显示100个,有1600多个用户需要修改,因此这里要循环17次 for i in {1..17}; do USER_ID=$(curl -s --insecure -H "PRIVATE-TOKEN: 49auTZXx2xxx" -H 'Accept:application/json' -X GET "https://yougitlab.com/api/v3/users?per_page=100&page=${i}" | jq '.[] | .id') # 这里${USER_ID[@]}不要用双引号引起来,引起来会将所有数组元素作为一个整体输出 for user_id in ${USER_ID[@]}; do curl -s -H 'Content-Type:application/json' -H 'Accept:application/json' -X PUT -d '{"projects_limit":100}' "https://yougitlab.com/api/v3/users/${user_id}?per_page=1700&private_token=49auTZXx2xxx" | jq echo "$user_id set projects_limit:100 done" | tee -a /tmp/set_gitlab_projects_limit done done
◎查看效果
post返回的结果:
查看执行结果: