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之引用和类属性的初步理解
May 15 Python
python根据给定文件返回文件名和扩展名的方法
Mar 27 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
python实现TF-IDF算法解析
Jan 02 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
解决Python3 控制台输出InsecureRequestWarning问题
Jul 15 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
Python实现AI换脸功能
Apr 10 Python
python多线程方法详解
Jan 18 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/03 新手入门
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
php可变长参数处理函数详解
2017/02/22 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
javascript分页代码(当前页码居中)
2012/09/20 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
Python实现简单多线程任务队列
2016/02/27 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
python开根号实例讲解
2020/08/30 Python
python如何控制进程或者线程的个数
2020/10/16 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
初中新生军训方案
2014/05/13 职场文书
基层党支部承诺书
2015/04/30 职场文书
全网非常详细的pytest配置文件
2022/07/15 Python