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开发编码规范
Sep 08 Python
跟老齐学Python之眼花缭乱的运算符
Sep 14 Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
python如何生成网页验证码
Jul 28 Python
Python中修改字符串的四种方法
Nov 02 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
python图片二值化提高识别率代码实例
Aug 24 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
用Python开发app后端有优势吗
Jun 29 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 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 取得瑞年与平年的天数的代码
2009/08/10 PHP
php strcmp使用说明
2010/04/22 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python threading模块操作多线程介绍
2015/04/08 Python
python实现类的静态变量用法实例
2015/05/08 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
python绘制多个子图的实例
2019/07/07 Python
Python绘制股票移动均线的实例
2019/08/24 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
Python使用文件操作实现一个XX信息管理系统的示例
2020/07/02 Python
详解python中的异常和文件读写
2021/01/03 Python
广州地球村科技数据库题目
2016/04/25 面试题
科室工作个人总结的自我评价
2013/10/29 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
团组织推荐意见
2015/06/05 职场文书
党纪处分决定书
2015/06/24 职场文书