python操作gitlab API过程解析


Posted in Python onDecember 27, 2019

这篇文章主要介绍了python操作gitlab API过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

使用 python-gitlab 模块来调用gitlab的API来管理gitlab

install

pip install python-gitlab
# 如果是安装到Python3使用可以使用如下命令
pip3 install python-gitlab

配置

为了保护API 用到的 private_token,一般会将其写到系统的配置文件中去

/etc/python-gitlab.cfg 或者 ~/.python-gitlab.cfg

配置示例:

root@pts/1 $ cat ~/.python-gitlab.cfg
[global]
default = kaishugit
ssh_verify = False
timeout = 8

[kaishugit]
url = http://10.0.0.6
private_token = xxxxx-V4Yxxxxxxks7u
api_version = 3

程序使用

在程序中使用的时候可以直接用如下方式调用

## login
gl = gitlab.Gitlab.from_config('kaishugit', ['~/.python-gitlab.cfg'])

examples

## 得到第一页project列表
projects = gl.projects.list()
## 得到所有project
projects = gl.projects.list(all=True)
projects = gl.projects.all()

附加

自定义脚本获取指定用户或者分组或者全部的代码仓库地址

#!/usr/bin/env python3
# encoding: utf-8
#

__Author__ = 'Colin'
__Date__ = '2018-06-20'

import gitlab

import os
import sys

class GitlabAPI(object):
  def __init__(self, *args, **kwargs):
    if os.path.exists('/etc/python-gitlab.cfg'):
      self.gl = gitlab.Gitlab.from_config('kaishugit', ['/etc/python-gitlab.cfg'])
    elif os.path.exists(os.getenv('HOME') + '/.python-gitlab.cfg'):
      self.gl = gitlab.Gitlab.from_config('kaishugit', [os.getenv('HOME') + '/.python-gitlab.cfg'])
    else:
      print('You need to make sure there is a file named "/etc/python-gitlab.cfg" or "~/.python-gitlab.cfg"')
      sys.exit(5)

  def get_user_id(self, username):
    user = self.gl.users.get_by_username(username)
    return user.id

  def get_group_id(self, groupname):
    group = self.gl.users.search(groupname)
    return group[0].id

  def get_all_projects(self):
    projects = self.gl.projects.list(all=True)
    result_list = []
    for project in projects:
      result_list.append(project.http_url_to_repo)
    return result_list

  def get_user_projects(self, userid):
    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):
    projects = self.gl.projects.owned(groupname=groupname, all=True)
    result_list = []
    for project in projects:
      result_list.append(project.http_url_to_repo)
    return result_list

if __name__ == '__main__':
  username='caichenyu'
  git = GitlabAPI()
  userid = git.get_user_id(username)
  print(username + '->' + str(userid))
  userprojects = git.get_user_projects(userid)
  print(userprojects)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
如何利用Fabric自动化你的任务
Oct 20 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
python线程池threadpool实现篇
Apr 27 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
python游戏地图最短路径求解
Jan 16 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 Python
Python关于OS文件目录处理的实例分享
May 23 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 #Python
python使用协程实现并发操作的方法详解
Dec 27 #Python
Python调用.NET库的方法步骤
Dec 27 #Python
IronPython连接MySQL的方法步骤
Dec 27 #Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 #Python
python3获取文件中url内容并下载代码实例
Dec 27 #Python
用python拟合等角螺线的实现示例
Dec 27 #Python
You might like
php上传图片并压缩的实现方法
2015/12/22 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python实时获取cmd的输出
2015/12/13 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
Python多进程原理与用法分析
2018/08/21 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
python自动发微信监控报警
2019/09/06 Python
python绘图模块之利用turtle画图
2021/02/12 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
自我鉴定范文
2013/11/10 职场文书
采购文员岗位职责
2013/11/20 职场文书
网上书店创业计划书
2014/01/12 职场文书
一份文言文检讨书
2014/09/13 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
教师师德承诺书2016
2016/03/25 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL