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 24 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
Python中单、双下划线的区别总结
Dec 01 Python
python增加矩阵维度的实例讲解
Apr 04 Python
Django学习笔记之为Model添加Action
Apr 30 Python
python async with和async for的使用
Jun 20 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
python实现连连看游戏
Feb 14 Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 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 selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
sina的lightbox效果。
2007/01/09 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python处理csv数据的方法
2015/03/11 Python
python中异常报错处理方法汇总
2016/11/20 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
python实现大量图片重命名
2020/03/23 Python
Python字符串格式化输出代码实例
2019/11/22 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
英国最大的手表网站:The Watch Hut
2017/03/31 全球购物
高中体育教学反思
2014/01/24 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
民主生活会发言材料
2014/10/20 职场文书
网络舆情信息简报
2015/07/21 职场文书
初中同学会致辞
2015/08/01 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python