目录
1、需要先安装python-gitlab库
2、登录gitlab
3、gitlab文件提取以及正则表达式查找关键字符串
在使用PYQT5进行代码生成时,有时候需要抓取gitlab最新代码中的版本号,以保持最新版本自动显示。
实际尝试有几种解决方案:
(1)模拟bash登录访问
(2)request库方式访问:get请求、post请求
(3)python-gitlab库方式访问
经过分析对比,使用python-gitlab库进行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
# 服务器地址
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失效情况下不会出现系统崩溃的问题。
示例代码如下所示
# 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()