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)