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的Django框架的运行方式及处理流程
Apr 08 Python
Python映射拆分操作符用法实例
May 19 Python
python实现TF-IDF算法解析
Jan 02 Python
python实现最长公共子序列
May 22 Python
python+pyqt5实现24点小游戏
Jan 24 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
python logging模块的使用
Sep 07 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
python编程学习使用管道Pipe编写优化代码
Nov 20 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
PHP 和 HTML
2006/10/09 PHP
消息持续发送的完整例子
2006/10/09 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
vue实现图片上传功能
2020/05/28 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
Python3多线程基础知识点
2019/02/19 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
python实现超市商品销售管理系统
2019/10/25 Python
Django 请求Request的具体使用方法
2019/11/11 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
python实现扫雷小游戏
2020/04/24 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
美术专业学生个人自我评价
2013/09/19 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
金陵十三钗观后感
2015/06/04 职场文书