导语:打算在运维平台上添加一个gitlab 增加用户和删除用户的功能。先通过shell把命令记录下来。后续换成golang
准备工作 安装gitlab
# 先安装docker-compose 运行一个gitlab 就可以随便搞了
mkdir -p /opt/gitlab/
cd /opt/gitlab/
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
cat > /opt/gitlab/docker-compose.yml <<EOF
version: '2'
services:
# Version Control service: Gitlab
gitlab:
image: gitlab/gitlab-ce:12.10.5-ce.0
ports:
- "32001:80"
volumes:
- ./log/:/var/log/gitlab
- ./data/:/var/opt/gitlab
- ./conf/:/etc/gitlab
restart: "no"
EOF
mkdir -p log data conf
ln -s /opt/gitlab/docker-compose /usr/bin/
docker-compose up -d
docker-compose up -d命令执行完毕 可能界面还是502 需要再等待一会。
设置用户root密码
设置完密码之后登陆 需要至少8位密码
创建api用的token
通过settings菜单或者直接使用如下URL,创建api用的token
http://192.168.1.113:32001/profile/personal_access_tokens
]
shell 添加用户测试
我的gitlab是v4 有些旧的可能是v3 具体查看对应的api文档http://192.168.1.113:32001/help/api/README.md
access_token="xTyvzxayjxsE1XDfuYNo"
gitlab_url="192.168.1.113:32001"
curl -X POST -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{ "email": "amao@163.com", "username": "amao", "password": "12345678", "name": "阿猫", "skip_confirmation": "true" }'
http://192.168.1.113:32001/admin/users
如果想显示好看 可以安装 jq
yum -y install jq
curl -X POST -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{ "email": "agou1@163.com", "username": "agou", "password": "12345678", "name": "阿猫", "skip_confirmation": "true" }' |jq .
shell删除用户
userid=7
curl -X DELETE -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/${userid}?hard_delete=true |jq .
这里一定要使用hard_delete=true 否则会产生Ghost User 如下图
点进去也是404
Ghost User需要通过进入容器删除
# 进入gitlab容器
docker exec -it gitlab_gitlab_1 sh
# 查询用户
user = User.find_by(username: "ghost")
# 删除ghost用户
User.delete(user.id)
shell获取所有用户
curl -X GET -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users |jq .
可以后期用golang 获取一下用户名,判断一下长度是否大于1 再执行删除。避免重名。
参考并纠正其中错误
https://liumiaocn.blog.csdn.net/article/details/107443400
https://blog.csdn.net/liumiaocn/article/details/107443377