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实现批量重命名文件的代码
May 25 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
Python制作exe文件简单流程
Jan 24 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
selenium+python自动化测试环境搭建步骤
Jun 03 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
Python实现为PDF去除水印的示例代码
Apr 03 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编程快速实现数组去重的方法详解
2017/07/22 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
浅析Jquery操作select
2016/12/13 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
网络技术支持面试题
2013/04/22 面试题
Linux开机引导的步骤是什么
2014/02/26 面试题
介绍信范文
2015/01/31 职场文书
大四学生个人总结
2015/02/15 职场文书
教师聘用意向书
2015/05/11 职场文书
一般纳税人申请报告
2015/05/18 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
求职信如何撰写?
2019/05/22 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Java实现简易的分词器功能
2021/06/15 Java/Android
使用CSS连接数据库的方式
2022/02/28 HTML / CSS