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中为什么要用self探讨
Apr 14 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
使用Python对Excel进行读写操作
Mar 30 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
Python实现的knn算法示例
Jun 14 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
Python3数字求和的实例
Feb 19 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
python将字典列表导出为Excel文件的方法
Sep 02 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
Django框架中视图的用法
Jun 10 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求正负数数组中连续元素最大值示例
2014/04/11 PHP
纯php生成随机密码
2015/10/30 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
求职信模版
2013/11/30 职场文书
企业演讲稿范文
2013/12/28 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
党校学习党性分析材料
2014/12/19 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers