引言
需求是公司大領導想要了解每周研發提交的代碼量。因為研發人員比較多,想着用 python 做個自動化,定時統計代碼量並發送郵件給領導。
統計gitlab代碼
首先安裝第三方庫python-gitlab,里面封裝了很多操作 gitlab api 的方法,我們只需要調用這些方法即可。
1、命令安裝
pip3 install python-gitlab
2、獲取 gitlab 管理員賬號的私有令牌,具體在哪不多說了,百度一下或者找 gitlab 的維護人員。
3、登錄 gitlab 及一些常用方法
import gitlab # gitlab 代碼倉庫地址 url_gitlab = 'http://xxxx.com.cn/' # 上面獲取的 gitlab 私有令牌 private_token= 'saidfhdfhsud' # 獲取 gitlab 可操作對象 gl = gitlab.Gitlab(self.url_gitlab,private_token=private_token,api_version='4') # 獲取第一頁的 project projects = gl.projects.list() # 獲取所有的 project projects = gl.projects.list(all=True) # 獲取所有 project 的 name 和 id for i in gl.projects.list(all=True, as_list=False): name = i.name id = i.id # 獲取第一頁 project 的 name 和 id for i in gl.projects.list(page=1): name = i.name id = i.id # 根據 id 查找項目 project = gl.projects.get(id) # 獲取該項目下所有分支 branches = project.branches.list() # 獲取指定分支的屬性 branch = project.branches.get('master') # 獲取改項目下所有commits commits = project.commits.list() # 獲取指定commit的info commit = project.commits.get('s9dfsa')
4、統計增量代碼
start_time = '2021-02-20' end_time = '2021-02-26' # 先把所有項目查出來,all=True 一定要加上。不然查出來的只有第一頁項目 projects = gl.projects.list(all = True) # 遍歷每一個項目 for project in projects: # 把每個項目下面的所有分支查出來 branches = project.branches.list() # 然后再遍歷每一個分支 for branch in branches: # 獲取一段時間內,指定分支的 commits commits = project.commits.list(all= True,query_parameters={'since': start_time,'until':end_time, 'ref_name': branch.name}) # 然后再遍歷每個提交記錄,查詢每個提交記錄的人和量 for commit in commits: com = project.commits.get(commit.id) # 提交commit開發者 committer_name = com.committer_name # 提交代碼 增量、刪除、總量 stats = com.stats # 增量代碼 additions = stats['additions']
stats是一個字典,里面有三組key-value。additions 是新增代碼,deletions 是刪除代碼,total 是總量代碼(新增+刪除)。到這里就可以統計增量、刪除 或者 總量代碼了,提供一種思路,用 pandas 的 dataframe 數據結構統計比較方便 。
更多使用方法參考官方文檔:https://python-gitlab.readthedocs.io/en/stable/index.html