我的gitlab API版本是Gitlab API  V4,运行的界面如下

python通过python-gitlab的API V4来获取gitlab的仓库、用户等信息_gitlab

(后续备注:我这里基于python-gitlab 2.10.0之前的版本写的脚本,在最新的python-gitlab3.8.1中有些API用法可能已经不支持了,使用时建议安装2.10.0的API库,pip install python-gitlab==2.10.0,如果要研究最新的API使用方法请参考​​https://python-gitlab.readthedocs.io/en/latest/api/gitlab.html​​)

代码如下:

# /usr/bin/python
# coding=utf-8
import gitlab,os
from GitLABSC import GET_PATH
CUR_DIR = GET_PATH.CUR_PATH()
applist = os.path.join(CUR_DIR,'repoinfo.txt')
def allprojects():
#######获取gitlab的所有projects###
projects = gl.projects.list(all=True)
for project in projects:
print(project.name,project.id)
with open(applist, 'a') as f:
f.write(project.name + '\n')
def allgroups():
#######获取gitlab的所有group名称以及ID###
all_groups = gl.groups.list(all=True)
for group in all_groups:
print(group.name,group.id)
def allusers():
#######获取gitlab的所有user名称以及ID###
users = gl.users.list(all=True)
for user in users:
print(user.username,user.id,user.name,user.state)
def assproject():
project_name = str(input('Input your repo name: '))
projects = gl.projects.list(search=project_name)
for line in projects :
if line.name == project_name :
print(line.id,line.name)
return line.id

def assgroup():
#######获取gitlab指定group###
group_name = input('Input the grp name: ')
grps = gl.groups.list(search=group_name)
for grp in grps:
if grp.name == group_name :
print(grp.name,grp.id)
return grp.id
def assuser():
#######获取gitlab指定user###
user_name = input('Input the user name: ')
users = gl.users.list(search=user_name)
for user in users:
if user.username == user_name :
print(user.username,user.id,user.name,user.state)
def UserProinGRP():
#######获取gitlab指定组内所有user以及project名称###
gid = assgroup()
group = gl.groups.get(gid)
gname = group.name
members = group.members.list(all=True)
for me in members:
print(group.name,me.username,me.access_level)
ginfo = '%s %s %s\n' % (group.name,me.username,me.access_level)
with open(gname,'a') as f:
f.write(ginfo)
projects = group.projects.list(all=True)
for project in projects :
print(group.name, project.name, project.id)

def main():
global gl
gl = gitlab.Gitlab('http://10.50.22.22/', private_token='xxxxxxxxxxj')
info = {0:'exit()',1:'allprojects()',2:'allgroups()',3:'allusers()',4:'assproject()',5:'assgroup()',6:'assuser()',7:'UserProinGRP()'}
serp = '-' * 20
print('''%s
1. 列出所有的projects
2. 列出所有的groups
3. 列出所有的users
4. 列出指定project的所有信息
5. 列出指定groups的所有信息
6. 列出指定users的所有信息
7. 列出指定的组内所有member和projects的信息
0. 退出

%s''' % (serp,serp))
num = int(input('Input yout choice: '))
exec(info[num])
if __name__ == '__main__':
main()