Gitlab-批量操作

Gitlab-批量操作

利用gitlab-api批量操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/opt/python3/bin/python3
import gitlab
import time
import os
import sys
import pandas as pd
import requests
import json

repo_url = "http://192.168.8.1:8090"
token = "xxxxxxxxxxx"

headers={
"PRIVATE-TOKEN" : token
}

session=requests.Session()

df1 = pd.DataFrame(columns=['pid','url','uid','uname','role'])

gl = gitlab.Gitlab(repo_url, private_token=token)
projects = gl.projects.list(all=True) ## 获取所有project
for p in projects:
# print(p.id)
# if p.id==370:
url=repo_url+"/api/v4/projects/"+str(p.id)+"/members" ## 获取project下所有member
resp=session.get(url,headers=headers)
j_member=json.loads(resp.text)
df_member=pd.json_normalize(j_member)
for i in range(len(df_member)):
df1 = df1.append({'pid':p.id,'url':p.http_url_to_repo,'uid':df_member.iloc[i]['id'],'uname':df_member.iloc[i]['username'],'role':df_member.iloc[i]['access_level']}, ignore_index=True)

print (df1)
df1.to_csv('project_member.csv',index = False) ## 导出csv

#for i in range(len(df1)):
# if df1.iloc[i]['uname']=="maiqixian":
# url=repo_url+"/api/v4/projects/"+str(df1.iloc[i]['pid'])+"/members/"+str(df1.iloc[i]['uid']) ## 按条件更新member的access_level
# print(url)
# data={"access_level":30}
# resp=session.put(url,headers=headers,data=data)
# print(resp)