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 解析XML文件
Apr 15 Python
python基础教程之元组操作使用详解
Mar 25 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
理论讲解python多进程并发编程
Feb 09 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
python+pyqt5实现24点小游戏
Jan 24 Python
详解python os.path.exists判断文件或文件夹是否存在
Nov 16 Python
python绘图模块之利用turtle画图
Feb 12 Python
pip install命令安装扩展库整理
Mar 02 Python
Django项目如何正确配置日志(logging)
Apr 29 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
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
js加解密 脚本解密
2008/02/22 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
详谈python中冒号与逗号的区别
2018/04/18 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
项目资料员岗位职责
2013/12/10 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
给护士表扬信
2014/01/19 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
法律进机关实施方案
2014/03/12 职场文书
作风建设演讲稿
2014/05/23 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
离婚被告答辩状
2015/05/22 职场文书