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单元测试框架unittest使用方法讲解
Apr 13 Python
Pycharm学习教程(2) 代码风格
May 02 Python
python timestamp和datetime之间转换详解
Dec 11 Python
快速了解Python中的装饰器
Jan 11 Python
python opencv之分水岭算法示例
Feb 24 Python
快速解决pandas.read_csv()乱码的问题
Jun 15 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
Feb 17 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php5.5新数组函数array_column使用
2013/07/08 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
python删除某个字符
2018/03/19 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
自荐信要包含哪些内容
2013/11/06 职场文书
行政助理工作职责范本
2014/03/04 职场文书
个性车贴标语
2014/06/24 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
导游词之丽江普济寺
2019/10/22 职场文书