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中的作用域规则详解
Jan 30 Python
Python中的模块和包概念介绍
Apr 13 Python
Python中functools模块函数解析
Mar 12 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
PyQt QCombobox设置行高的方法
Jun 20 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Python如何实现线程间通信
Jul 30 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 split汉字
2009/06/05 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
Javascript模板技术
2007/04/27 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
Sea.JS知识总结
2016/05/05 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python内置函数OCT详解
2016/11/09 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
医学专业毕业生个人的求职信
2013/12/04 职场文书
年终晚会主持词
2014/03/25 职场文书
学术诚信承诺书
2014/05/26 职场文书
初中班级口号
2014/06/09 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
学习保证书100字
2015/02/26 职场文书
Python Django项目和应用的创建详解
2021/11/27 Python
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers