写在前面
- 我使用的Gitlab版本为15.3.1,以下所有操作都是基于这个版本,如果版本有差异,可能涉及的api会有不同
- 服务器配置为:4核16G
- 实现语言:java
项目需求
- 公司要求Gitlab对接OA系统中的流程控制,当有用户需要创建时,可以通过OA系统提交流程进行审批,审批通过之后,OA系统会通过调用Gitlab的API 进行用户创建,不需要人工创建,节约人力,节省时间
创建PRIVATE TOKEN
- 登录Gitlab
- 点击用户
- 点击编辑
- 创建access token
创建用户
Gitlab API 调用路径
https://ip:port/api/v4/users
API调用代码实现
- 输入参数说明
username:用户名,一般填写用户中文名
name:用户昵称
email:用户邮箱,不可重复
其它字段都不是必须的,可参考以下链接进行查看
https://docs.gitlab.com/ee/api/users.html#user-creation - java代码实现
public static boolean createUser(String username,String name,String email){
try {
CloseableHttpClient httpclients = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(USER_CREATE_GET_API);
List<NameValuePair> pairs = new ArrayList<>();
//private_token为上面生成的值
pairs.add(new BasicNameValuePair("private_token","替换成你的private_toke"));
pairs.add(new BasicNameValuePair("username",username));
pairs.add(new BasicNameValuePair("name",name));
pairs.add(new BasicNameValuePair("email",email));
pairs.add(new BasicNameValuePair("reset_password","true"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(pairs,"UTF-8");
httpPost.setEntity(formEntity);
CloseableHttpResponse response = httpclients.execute(httpPost);
HttpEntity httpEntity = response.getEntity();
String result = EntityUtils.toString(httpEntity,"UTF-8");
JSONObject jsonObject = JSON.parseObject(result);
System.err.println(result);
if(jsonObject.containsKey("message")){
return false;
}
}catch (Exception e){
e.printStackTrace();
}
return true;
}
删除用户
Gitlab API 调用路径
https://ip:port/api/v4/users/用户创建时生成的id
API调用代码实现
- 输入参数说明
userId:用户创建时生成的id
isHardDelete: 非必须,如果为true,则通常移至 Ghost 用户的贡献以及由该用户单独拥有的群组将被删除
可参考以下链接进行查看
https://docs.gitlab.com/ee/api/users.html#user-deletion - java代码实现
public static boolean deleteUser(int userId,boolean isHardDelete){
try {
if(userId <= 0){
return false;
}
CloseableHttpClient httpclients = HttpClients.createDefault();
HttpDelete httpDelete = new HttpDelete(USER_CREATE_GET_API + "/" + userId);
// 设置参数信息
URI uri = new URIBuilder(httpDelete.getURI())
//private_token为上面生成的值
.addParameter("private_token", "替换成你的private_token")
.build();
httpDelete.setURI(uri);
// 发起请求
CloseableHttpResponse response = httpclients.execute(httpDelete);
// 处理数据
HttpEntity httpEntity = response.getEntity();
String s = EntityUtils.toString(httpEntity);
System.err.println(s);
}catch (Exception e){
e.printStackTrace();
}
return true;
}
获取所有用户列表
Gitlab API 调用路径
https://ip:port/api/v4/users
API调用代码实现
- 输入参数说明
无
可参考以下链接进行查看
https://docs.gitlab.com/ee/api/users.html#user-deletion - java代码实现
public static JSONArray getAllUsers(){
try {
CloseableHttpClient httpclients = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(USER_CREATE_GET_API);
// 设置参数信息
URI uri = new URIBuilder(httpGet.getURI())
//private_token为上面生成的值
.addParameter("private_token", "替换成你的private_toke")
.addParameter("without_project_bots", "true")
.build();
httpGet.setURI(uri);
// 发起请求
CloseableHttpResponse response = httpclients.execute(httpGet);
// 处理数据
HttpEntity httpEntity = response.getEntity();
String s = EntityUtils.toString(httpEntity, "UTF-8");
return JSON.parseArray(s);
}catch (Exception e){
e.printStackTrace();
}
return null;
}