目錄
在使用PYQT5進行代碼生成時,有時候需要抓取gitlab最新代碼中的版本號,以保持最新版本自動顯示。
實際嘗試有幾種解決方案:
(1)模擬bash登錄訪問
(2)request庫方式訪問:get請求、post請求
(3)python-gitlab庫方式訪問
經過分析對比,使用python-gitlab庫進行gitlab操作的方式最爲合適
1、需要先安裝python-gitlab庫
pip install python-gitlab
gitlab庫的基本使用可以參考python-gitlab官方文檔
使用指導:https://python-gitlab.readthedocs.io/en/stable/api-usage.html
接口說明:https://python-gitlab.readthedocs.io/en/stable/api/gitlab.html#module-gitlab
2、登錄gitlab
# 服務器地址
url = 'http://xxxxx.com.cn'
# 在gitlab--settings中獲取Access Token
accessToken = 'xxxxxxxxxx'
gl = gitlab.Gitlab(url, accessToken)
url爲所使用的gitlab服務器地址
AccessToken爲訪問該服務器所需要的訪問令牌,這個token是在gitlab的用戶設置中進行配置的,如下所示:
這裏可以設置這個accessToken的權限、有效日期。
特別注意的是:這個AccessToken只會在生成的首次纔會顯示,需要妥善另行保存,否則後面就無法查看到這個Token值了
爲了做容錯處理,特地加上了try exception結構,保證在Token失效情況下不會出現系統崩潰的問題。
3、gitlab文件提取以及正則表達式查找關鍵字符串
示例代碼如下所示
# gilab包,re包
import gitlab,re
class getGitlabFileVersion:
# 獲得項目:projectID的格式隨意,反正我就寫了個數字進去
def getProject(self):
try:
# 服務器地址
url = 'http://xxxxx.com.cn'
# 在gitlab--settings中獲取Access Token
accessToken = 'xxxxxxxxxx'
gl = gitlab.Gitlab(url, accessToken)
print(gl)
projects = gl.projects.list()
for project in projects:
print(project)
tmp = gl.projects.get(334)
f = tmp.files.get(file_path='xx/version.c', ref='master')
content = f.decode()
content = content.decode()
print(content)
ret = re.search("\d"+"."+"\d"+"."+"\d",content)
print(ret.group())
except:
print("err")
#raise error(e.error_message, e.response_code, e.response_body)
# 測試
obj= getGitlabFileVersion()
obj.getProject()