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解析JSON数据的基本方法
Oct 15 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
python中int与str互转方法
Jul 02 Python
浅谈Python traceback的优雅处理
Aug 31 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
如何利用python给图片添加半透明水印
Sep 06 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
Python Matplotlib库实现画局部图
Nov 17 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 程式大小
2006/12/06 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
javascript版2048小游戏
2015/03/18 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
Electron vue的使用教程图文详解
2019/07/05 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
pt-archiver 主键自增
2022/04/26 MySQL