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 18 Python
Python生成随机MAC地址
Mar 10 Python
用Python中的字典来处理索引统计的方法
May 05 Python
举例详解Python中yield生成器的用法
Aug 05 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
python实现简单加密解密机制
Mar 19 Python
Python 离线工作环境搭建的方法步骤
Jul 29 Python
Apache部署Django项目图文详解
Jul 30 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
解决Python安装cryptography报错问题
Sep 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 curl模拟post请求小实例
2013/11/13 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
python在非root权限下的安装方法
2018/01/23 Python
python中的闭包函数
2018/02/09 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
医科学校毕业生自荐信
2013/11/09 职场文书
大学军训感言800字
2014/02/27 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
北京故宫的导游词
2015/01/31 职场文书
个人专业技术总结
2015/03/05 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers