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求素数示例分享
Feb 16 Python
python图像常规操作
Nov 11 Python
python用户管理系统的实例讲解
Dec 23 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
Python字符串处理的8招秘籍(小结)
Aug 13 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
Python根据指定文件生成XML的方法
Jun 29 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
用PHP制作静态网站的模板框架(四)
2006/10/09 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
session 加入redis的实现代码
2016/07/15 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python 切换root 执行命令的方法
2019/01/19 Python
python实现银行管理系统
2019/10/25 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python中rb含义理解
2020/06/18 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
超市总经理岗位职责
2014/02/02 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
护理专业自荐书
2014/06/04 职场文书
小石潭记导游词
2015/02/03 职场文书
springboot读取resources下文件的方式详解
2022/06/21 Java/Android