工作中的场景,记录下来分享给大家。
需求
公司私有部署了gitlab保存公司代码,希望在发布系统中可以展示项目在gitlab的提交历史,供发布人员选择提交commit记录并构建对应的docker镜像。
不可行的方案
但是很快我就发现,这个方案是不可行的。
这个库实际上相当于git客户端,它必须把gitlab远程仓库的代码checkout到本地,然后才能执行类似git log命令的方式获取提交日志。
对于一个web应用来说,仅仅为了看一下提交历史就要把代码下载回来,显然是合理的。
建议方案
解决方法是直接访问gitlab的API,它拥有所有的仓库,因此也可以快速的查看提交历史。
首先创建客户端:
import gitlab
client = gitlab.Gitlab(https://gitlab-team.tiantian.com, private_token='XXXXXXXXXX', timeout=2, api_version='3')第一个参数:gitlab服务端地址
private_token:它支持多种登录认证方式,常见的就是帐号+密码 或者 授权一个token(去gitlab中分配)。
timeout:超时时间单位是秒。
api_version:需要看一下gitlab服务端的版本,较旧的服务端版本提供的是v3的API,最新的提供的是v4 API,版本不对应是无法访问通gitlab的。
现在我们要主动发起认证:
client.auth()