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制作检测Linux运行信息的工具的教程
Apr 01 Python
python使用socket进行简单网络连接的方法
Apr 29 Python
python获取当前日期和时间的方法
Apr 30 Python
Python实现k-means算法
Feb 23 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
python将控制台输出保存至文件的方法
Jan 07 Python
浅谈python3中input输入的使用
Aug 02 Python
django+echart数据动态显示的例子
Aug 12 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
Python如何使用paramiko模块连接linux
Mar 18 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
Python多线程和队列操作实例
2015/06/21 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
pymysql的简单封装代码实例
2020/01/08 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
python 基于opencv去除图片阴影
2021/01/26 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
应届毕业生个人求职信范文
2014/01/29 职场文书
搞笑的获奖感言
2014/08/16 职场文书
商场父亲节活动方案
2014/08/27 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书