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)