python使用 python-gitlab 模块
·
python使用 python-gitlab 模块来调用gitlab的API来管理gitlab
1.安装
pip install python-gitlab
2.为了保护API 用到的 private_token,一般会将其写到系统的配置文件中去/etc/python-gitlab.cfg
或者 ~/.python-gitlab.cfg
我在下面的示例中,是在代码中配置的
root@pts/1 $ cat ~/.python-gitlab.cfg
[global]
default = git
ssh_verify = False
timeout = 10
[git]
url = http://10.0.0.1
private_token = xxxxxxxx
api_version = 3
3.程序使用
在程序中使用的时候可以直接用如下方式调用
## login
gl = gitlab.Gitlab.from_config('git', ['~/.python-gitlab.cfg'])
## 得到第一页project列表
projects = gl.projects.list()
## 得到所有project
projects = gl.projects.list(all=True)
projects = gl.projects.all()
4.直接使用,自定义脚本获取指定用户或者分组或者全部的代码仓库文件信息、git地址、以及其他一些信息
其他博客也有类似方法,然而并不能拿到群组内项目,现经过小改动,亲测可满足要求
import gitlab
class GitlabAPI(object):
def __init__(self, *args, **kwargs):
self.gl = gitlab.Gitlab('https://xxxxxxxxxxx.com', private_token='xxxxxxxxxx', #参数为gitlab仓库地址和个人private_take
api_version='3')
def get_user_id(self, username):
"""
通过用户名获取用户id
:param username:
:return:
"""
user = self.gl.users.get_by_username(username)
return user.id
def get_group_id(self, groupname):
"""
通过组名获取组id
:param groupname:
:return:
"""
group = self.gl.groups.get(groupname, all=True)
return group.id
def get_user_projects(self, userid):
"""
获取用户所拥有的项目
:param userid:
:return:
"""
projects = self.gl.projects.owned(userid=userid, all=True)
result_list = []
for project in projects:
result_list.append(project.http_url_to_repo)
return result_list
def get_group_projects(self, groupname):
"""
获取组内项目!!!!!!!其他博客也有类似方法,实测不能拿到群组内项目,现经过小改动,亲测可满足要求
:param groupname:
:return:
"""
group = self.gl.groups.get(groupname, all=True)
projects = group.projects.list(all=True)
return projects
def getContent(self, projectID):
"""
通过项目id获取文件内容
:param projectID:
:return:
"""
projects =self.gl.projects.get(projectID)
f = projects.files.get(file_path='指定项目中的文件路径', ref='master')
content = f.decode()
# print(content)
return content.decode('utf-8')
def get_all_group(self):
"""
获取所有群组
:return:
"""
return self.gl.groups.list(all=True)
更多推荐
已为社区贡献6条内容
所有评论(0)