Gitlab中提供了Rest方式进行用户的增删改查操作,这篇文章对相关内容通过示例进行说明。
liumiaocn:gitlab liumiao$ cat docker-compose.yml 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" liumiaocn:gitlab liumiao$事前准备
创建如下目录:
liumiaocn:gitlab liumiao$ ls docker-compose.yml liumiaocn:gitlab liumiao$ mkdir -p log data conf liumiaocn:gitlab liumiao$ ls conf data docker-compose.yml log liumiaocn:gitlab liumiao$启动
启动命令:docker-compose up -d
登录并创建apitoken 登录URL- http://localhost:32001
注:此处设定root用户密码,由于后续直接使用token进行用户创建,示例说明中不再直接需要使用root设定的密码。
通过settings菜单或者直接使用如下URL,创建api用的token
- http://localhost:32001/profile/personal_access_tokens
执行命令 access_token=“7F2jdsYyeDsuhGnyTvPz” gitlab_url=“localhost: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”: “liumiaocn@outlook.com”, “username”: “liumiao”, “password”: “12341234”, “name”: “liumiao”, “skip_confirmation”: “true” }’
执行日志示例:
liumiaocn:gitlab liumiao$ 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": "liumiaocn@outlook.com", "username": "liumiao", "password": "12341234", "name": "liumiao", "skip_confirmation": "true" }' |jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 898 100 759 100 139 1581 289 --:--:-- --:--:-- --:--:-- 1870 { "id": 2, "name": "liumiao", "username": "liumiao", "state": "active", "avatar_url": "https://www.gravatar.com/avatar/95c1f7ff72d71b448592a335ba80fb64?s=80&d=identicon", "web_url": "http://174e7227bacf/liumiao", "created_at": "2020-07-19T10:27:23.468Z", "bio": null, "location": null, "public_email": "", "skype": "", "linkedin": "", "twitter": "", "website_url": "", "organization": null, "job_title": "", "work_information": null, "last_sign_in_at": null, "confirmed_at": "2020-07-19T10:27:23.309Z", "last_activity_on": null, "email": "liumiaocn@outlook.com", "theme_id": 1, "color_scheme_id": 1, "projects_limit": 100000, "current_sign_in_at": null, "identities": [], "can_create_group": true, "can_create_project": true, "two_factor_enabled": false, "external": false, "private_profile": false, "is_admin": false } liumiaocn:gitlab liumiao$
关于添加用户时的相应选项说明可参看:https://liumiaocn.blog.csdn.net/article/details/107441384
操作:查询所有用户执行命令 curl -X GET -H “PRIVATE-TOKEN: ${access_token}” http://${gitlab_url}/api/v4/users
执行日志示例:
liumiaocn:gitlab liumiao$ curl -X GET -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users |jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1568 100 1568 0 0 14126 0 --:--:-- --:--:-- --:--:-- 14126 [ { "id": 2, "name": "liumiao", "username": "liumiao", "state": "active", "avatar_url": "https://www.gravatar.com/avatar/95c1f7ff72d71b448592a335ba80fb64?s=80&d=identicon", "web_url": "http://174e7227bacf/liumiao", "created_at": "2020-07-19T10:27:23.468Z", "bio": null, "location": null, "public_email": "", "skype": "", "linkedin": "", "twitter": "", "website_url": "", "organization": null, "job_title": "", "work_information": null, "last_sign_in_at": null, "confirmed_at": "2020-07-19T10:27:23.309Z", "last_activity_on": null, "email": "liumiaocn@outlook.com", "theme_id": 1, "color_scheme_id": 1, "projects_limit": 100000, "current_sign_in_at": null, "identities": [], "can_create_group": true, "can_create_project": true, "two_factor_enabled": false, "external": false, "private_profile": false, "is_admin": false }, { "id": 1, "name": "Administrator", "username": "root", "state": "active", "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon", "web_url": "http://174e7227bacf/root", "created_at": "2020-07-19T10:24:30.088Z", "bio": null, "location": null, "public_email": "", "skype": "", "linkedin": "", "twitter": "", "website_url": "", "organization": null, "job_title": "", "work_information": null, "last_sign_in_at": "2020-07-19T10:26:34.687Z", "confirmed_at": "2020-07-19T10:24:29.510Z", "last_activity_on": "2020-07-19", "email": "admin@example.com", "theme_id": 1, "color_scheme_id": 1, "projects_limit": 100000, "current_sign_in_at": "2020-07-19T10:26:34.687Z", "identities": [], "can_create_group": true, "can_create_project": true, "two_factor_enabled": false, "external": false, "private_profile": false, "is_admin": true } ] liumiaocn:gitlab liumiao$操作:查询单个用户
指定某一参数进行查询,比如此处使用username进行查询
liumiaocn:gitlab liumiao$ curl -X GET -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users?username=liumiao |jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 761 100 761 0 0 8952 0 --:--:-- --:--:-- --:--:-- 8952 [ { "id": 2, "name": "liumiao", "username": "liumiao", "state": "active", "avatar_url": "https://www.gravatar.com/avatar/95c1f7ff72d71b448592a335ba80fb64?s=80&d=identicon", "web_url": "http://174e7227bacf/liumiao", "created_at": "2020-07-19T10:27:23.468Z", "bio": null, "location": null, "public_email": "", "skype": "", "linkedin": "", "twitter": "", "website_url": "", "organization": null, "job_title": "", "work_information": null, "last_sign_in_at": null, "confirmed_at": "2020-07-19T10:27:23.309Z", "last_activity_on": null, "email": "liumiaocn@outlook.com", "theme_id": 1, "color_scheme_id": 1, "projects_limit": 100000, "current_sign_in_at": null, "identities": [], "can_create_group": true, "can_create_project": true, "two_factor_enabled": false, "external": false, "private_profile": false, "is_admin": false } ] liumiaocn:gitlab liumiao$操作:修改用户信息
比如这里使用PUT方法修改用户的密码信息,执行示例日志如下所示:
liumiaocn:gitlab liumiao$ curl -X PUT -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/${userid} \ > -H 'cache-control: no-cache' \ > -H 'content-type: application/json' \ > -d '{ "password": "1234512345"}' {"id":2,"name":"liumiao","username":"liumiao","state":"active","avatar_url":"https://www.gravatar.com/avatar/95c1f7ff72d71b448592a335ba80fb64?s=80\u0026d=identicon","web_url":"http://174e7227bacf/liumiao","created_at":"2020-07-19T10:27:23.468Z","bio":null,"location":null,"public_email":"","skype":"","linkedin":"","twitter":"","website_url":"","organization":null,"job_title":"","work_information":null,"last_sign_in_at":"2020-07-19T10:31:43.193Z","confirmed_at":"2020-07-19T10:27:23.309Z","last_activity_on":"2020-07-19","email":"liumiaocn@outlook.com","theme_id":1,"color_scheme_id":1,"projects_limit":100000,"current_sign_in_at":"2020-07-19T10:31:43.193Z","identities":[],"can_create_group":true,"can_create_project":true,"two_factor_enabled":false,"external":false,"private_profile":false,"is_admin":false}liumiaocn:gitlab liumiao$
使用修改后的密码登录(1234512345),可以成功登录,提示修改密码
liumiaocn:gitlab liumiao$ curl -X GET -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users |jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1620 100 1620 0 0 18409 0 --:--:-- --:--:-- --:--:-- 18409 [ { "id": 2, "name": "liumiao", "username": "liumiao", "state": "active", "avatar_url": "https://www.gravatar.com/avatar/95c1f7ff72d71b448592a335ba80fb64?s=80&d=identicon", "web_url": "http://174e7227bacf/liumiao", "created_at": "2020-07-19T10:27:23.468Z", "bio": null, "location": null, "public_email": "", "skype": "", "linkedin": "", "twitter": "", "website_url": "", "organization": null, "job_title": "", "work_information": null, "last_sign_in_at": "2020-07-19T10:31:43.193Z", "confirmed_at": "2020-07-19T10:27:23.309Z", "last_activity_on": "2020-07-19", "email": "liumiaocn@outlook.com", "theme_id": 1, "color_scheme_id": 1, "projects_limit": 100000, "current_sign_in_at": "2020-07-19T10:31:43.193Z", "identities": [], "can_create_group": true, "can_create_project": true, "two_factor_enabled": false, "external": false, "private_profile": false, "is_admin": false }, { "id": 1, "name": "Administrator", "username": "root", "state": "active", "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon", "web_url": "http://174e7227bacf/root", "created_at": "2020-07-19T10:24:30.088Z", "bio": null, "location": null, "public_email": "", "skype": "", "linkedin": "", "twitter": "", "website_url": "", "organization": null, "job_title": "", "work_information": null, "last_sign_in_at": "2020-07-19T10:26:34.687Z", "confirmed_at": "2020-07-19T10:24:29.510Z", "last_activity_on": "2020-07-19", "email": "admin@example.com", "theme_id": 1, "color_scheme_id": 1, "projects_limit": 100000, "current_sign_in_at": "2020-07-19T10:26:34.687Z", "identities": [], "can_create_group": true, "can_create_project": true, "two_factor_enabled": false, "external": false, "private_profile": false, "is_admin": true } ] liumiaocn:gitlab liumiao$删除用户liumiao
liumiaocn:gitlab liumiao$ userid=2 liumiaocn:gitlab liumiao$ curl -X DELETE -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/${userid}?hard_delete=true liumiaocn:gitlab liumiao$ echo $? 0 liumiaocn:gitlab liumiao$删除后所有用户查询
liumiaocn:gitlab liumiao$ curl -X GET -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users |jq . % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 808 100 808 0 0 10100 0 --:--:-- --:--:-- --:--:-- 10100 [ { "id": 1, "name": "Administrator", "username": "root", "state": "active", "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon", "web_url": "http://174e7227bacf/root", "created_at": "2020-07-19T10:24:30.088Z", "bio": null, "location": null, "public_email": "", "skype": "", "linkedin": "", "twitter": "", "website_url": "", "organization": null, "job_title": "", "work_information": null, "last_sign_in_at": "2020-07-19T10:26:34.687Z", "confirmed_at": "2020-07-19T10:24:29.510Z", "last_activity_on": "2020-07-19", "email": "admin@example.com", "theme_id": 1, "color_scheme_id": 1, "projects_limit": 100000, "current_sign_in_at": "2020-07-19T10:26:34.687Z", "identities": [], "can_create_group": true, "can_create_project": true, "two_factor_enabled": false, "external": false, "private_profile": false, "is_admin": true } ] liumiaocn:gitlab liumiao$
更为详细的删除说明可参看:https://liumiaocn.blog.csdn.net/article/details/107443377