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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM