python gitlab_Python Gitlab Api 使用方法

简述

公司使用gitlab 来托管代码,日常代码merge request 以及其他管理是交给测试,鉴于操作需经常打开网页,重复且繁琐,所以交给Python 管理。

安装

pip install python-gitlab

环境: py3

DEMO

# -*- coding: utf-8 -*-

__Author__ = "xiewm"

__Date__ = '2017/12/26 13:46'

"""

gitlab 经常使用到的api

DOC_URL: http://python-gitlab.readthedocs.io/en/stable/

LOCAL_PATH: C:\Python36\Lib\site-packages\gitlab

"""

import gitlab

url = 'http://xxxxxxx'

token = 'xxxxxxxxxxxxxx'

# 登录

gl = gitlab.Gitlab(url, token)

# ---------------------------------------------------------------- #

# 获取第一页project

projects = gl.projects.list()

# 获取所有的project

projects = gl.projects.list(all=True)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取所有project的name,id

for p in gl.projects.list(all=True, as_list=False):

print(p.name, p.id)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取第一页project的name,id

for p in gl.projects.list(page=1):

print(p.name, p.id)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 通过指定id 获取 project 对象

project = gl.projects.get(501)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 查找项目

projects = gl.projects.list(search='keyword')

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 创建一个项目

project = gl.projects.create({'name':'project1'})

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取公开的项目

projects = gl.projects.list(visibility='public') # public, internal or private

# ---------------------------------------------------------------- #

# 获取 project 对象是以下操作的基础

# ---------------------------------------------------------------- #

# 通过指定project对象获取该项目的所有分支

branches = project.branches.list()

print(branches)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取指定分支的属性

branch = project.branches.get('master')

print(branch)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 创建分支

branch = project.branches.create({'branch_name': 'feature1',

'ref': 'master'})

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 删除分支

project.branches.delete('feature1')

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 分支保护/取消保护

branch.protect()

branch.unprotect()

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取指定项目的所有tags

tags = project.tags.list()

# 获取某个指定tag 的信息

tags = project.tags.list('1.0')

# 创建一个tag

tag = project.tags.create({'tag_name':'1.0', 'ref':'master'})

# 设置tags 说明:

tag.set_release_description('awesome v1.0 release')

# 删除tags

project.tags.delete('1.0')

# or

tag.delete()

# ---------------------------------------------------------------- #

# 获取所有commit info

commits = project.commits.list()

for c in commits:

print(c.author_name, c.message, c.title)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取指定commit的info

commit = project.commits.get('e3d5a71b')

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取指定项目的所有merge request

mrs = project.mergerequests.list()

print(mrs)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 获取 指定mr info

mr = project.mergerequests.get(mr_id)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 创建一个merge request

mr = project.mergerequests.create({'source_branch':'cool_feature',

'target_branch':'master',

'title':'merge cool feature', })

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 更新一个merge request 的描述

mr.description = 'New description'

mr.save()

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 开关一个merge request (close or reopen):

mr.state_event = 'close' # or 'reopen'

mr.save()

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# Delete a MR:

project.mergerequests.delete(mr_id)

# or

mr.delete()

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# Accept a MR:

mr.merge()

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 指定条件过滤 所有的merge request

# state: state of the MR. It can be one of all, merged, opened or closed

# order_by: sort by created_at or updated_at

# sort: sort order (asc or desc)

mrs = project.mergerequests.list(state='merged', sort='asc') # all, merged, opened or closed

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# 创建一个commit

data = {

'branch_name': 'master', # v3

'commit_message': 'blah blah blah',

'actions': [

{

'action': 'create',

'file_path': 'blah',

'content': 'blah'

}

]

}

commit = project.commits.create(data)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# Compare two branches, tags or commits:

result = project.repository_compare('develop', 'feature-20180104')

print(result)

# get the commits

for commit in result['commits']:

print(commit)

#

# get the diffs

for file_diff in result['diffs']:

print(file_diff)

# ---------------------------------------------------------------- #

# ---------------------------------------------------------------- #

# get the commits

for commit in result['commits']:

print(commit)

#

# get the diffs

for file_diff in result['diffs']:

print(file_diff)

# ---------------------------------------------------------------- #

总结

通过以上的api 可以封装一整套gitlab 的脚本操作或者是命令行操作。

以上这篇Python Gitlab Api 使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持谷谷点程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomee_Apache TomEE + JMS。 从未如此简单。

tomee我记得J2EE (1.3和1.4)的过去,使用JMS启动项目非常困难。 您需要安装JMS 代理 ,创建主题或队列 ,最后使用服务器配置文件和JNDI开始自己的战斗。 感谢JavaEE 6及其它,使用JMS确实非常简单。 但是&…

娄底二中高考2021成绩查询,2021年娄底高考状元名单公布,娄底高考状元学校资料及最高分...

2019年高考已经落下帷幕,高考放榜时刻就要到来,每年的高考状元都会被各界高度关注,那么今年娄底高考状元花落谁家呢?娄底高考状元会给人带来惊喜吗,让我们一起期待2019年娄底高考状元的诞生。下面小编为给为梳理下历年…

C 常指针

C 指向对象的常指针C 定义指向对象的常指针的一般形式为 类名 * const指针变量名;也可以在定义指针变量时使之初始化在C 中,虽然指向对象的常指针变量的值不能改变,但可以改变其所指向对象的值,如果想将一个指针变量固定地与一个对…

microsoftexchange邮箱容量怎样看_企业邮箱申请注册的要求有哪些?_网站建设_创客网络...

随着现在互联网信息化发展的速度不断加快,企业邮箱作为企业之间信息传输的重要工具,其重要性不亚于企业网站,但市场上企业邮箱种类繁多,包含的功能也各不相同,稍有差异,你知道怎么去选择好企业邮箱吗&#…

java 登陆验证失败_使用Java 8流进行快速失败的验证

java 登陆验证失败我已经失去了看过使用快速失败验证代码状态的代码的次数,方法如下: public class PersonValidator {public boolean validate(Person person) {boolean valid person ! null;if (valid) valid person.givenName ! null;if (valid) v…

Unity中Shader观察空间推导(在Shader中实现)

文章目录 前言一、观察空间矩阵推导1、求观察空间基向量2、求观察空间的基向量在世界空间中的矩阵 的 逆矩阵2、求平移变换矩阵3、相乘得出 观察空间转化矩阵4、得到顶点的世界空间坐标,然后转化到观察空间5、把观察空间坐标转化为齐次裁剪坐标输出到屏幕 二、最终效…

计算机应用技术一级考试成绩,《计算机应用基础》课程与等级考试成绩的关系...

《闽南师范大学关于计算机应用基础课程成绩的暂行规定》(闽南师大〔2016〕197号)已于2016年7月12日下发,但在执行过程总有包括教务员及学生在内各种人员的种种疑问及错误理解与传达,现在梳理如下:一、开设有《计算机应用基础》课程的学生&…

C 常引用

C 对象常引用在C 中,常用常指针和常引用作函数参数,既能保证数据安全,使数据不能被随意修改,在调用函数时又不必建立实参的拷贝。用常指针和常引用作函数参数,可以提高程序运行效率。在C 中,如果变量名和引…

jasonencode php_PHP的json_encode()函数与JSON对象

一、问题描述这周搬砖的时候,前端通过ajax获取后端的数据后,照例用 对象.属性 的方式取值,然而结果总是总是不能如预期般展示在页面上。先写个 demo 还原下场景:选中一个下拉框列表选项后,会在下拉框下面展示文字。这是…

intext:企业_企业中的微服务:敌是友?

intext:企业宏观问题的微观解决方法? 微服务的炒作无处不在,尽管业界似乎无法就确切的定义达成共识,但我们一再被告知,从单一应用程序转向由小型服务组成的面向服务的体系结构(SOA)是正确的方法…

mui hello html5 安装,HBuilder开发App Step1——环境搭建,HelloMUI 以及真机调试(示例代码)...

No1. 必须搭建java环境只需要最基础的java环境,也就是cmd下可以运行java和javac即可,具体教程请自行百度,都会有很详细的教程,这里不重点介绍。No2. 下载安装HBuilder下载完成后请将zip包解压缩到自定义的目录(windows)&#xf…

C 析构函数

C 析构函数概述C 析构函数是一个特殊的成员函数,作用与构造函数相反,它的名字是类名的前面加一个~符号,析构函数是与构造函数作用相反的函数,当对象的生命期结束时,会自动执行析构函数。C 执行析构函数的情…

前后端分离的项目部署到tomcat_前后端分离后,tomcat服务器部署和发布

打包服务端:IDEA打开项目,等待项目初始化完成,点击Build- Build Artifacts,进行打包image.png点击之后会出现下面这个小窗口,选择红框中部分:image.png这个过程就是打包了,等待打包完成之后&…

vue 侦听器侦听对象属性_不删除侦听器–使用ListenerHandles

vue 侦听器侦听对象属性听一个可观察的实例并对它的变化做出React很有趣。 做一些必要的事情来打断或结束这种聆听会变得很有趣。 让我们看看问题的根源和解决方法。 总览 这篇文章将首先讨论这种情况,然后再讨论常见的方法和问题所在。 然后,它将提供解…

华硕笔记本桌面没有显示计算机,华硕笔记本的桌面不见了,急求高手解答

满意答案下放工人2013.04.06采纳率:54% 等级:12已帮助:5701人★桌面-点击鼠标右键-点击排列图标-点击显示桌面图标★在桌面上右键点击→“属性”→桌面项→左下有个“自定义桌面”进入设置,把…

Facebook开源 C++11 组件库,真香!

Folly是Facebook open source library的缩写,提供了类似 Boost 和 std 库的功能。包括散列、字符串、向量、内存分配、位处理等,满足大规模高性能的需求。逻辑设计Folly 是一组相对独立的组件,有的简单到几个符号。对内部依赖没有限制&#x…

sentinel接入网关应用_接入容器服务Kubernetes版应用

server:port: 8090# Eurekaeureka:instance:leaseRenewalIntervalInSeconds: 10leaseExpirationDurationInSeconds: 30client:enabled: true #若希望开启Euerka支持,则置为true并将其它服务发现置为false。serviceUrl:defaultZone: http://my-eureka-ack-springclou…

undertow ssl_SSL与WildFly 8和Undertow

undertow ssl我一直在研究WildFly 8的一些安全性主题,偶然发现了一些没有很好记录的配置选项。 其中之一是用于新的Web子系统Undertow的TLS / SSL配置。 有很多关于较旧的Web子系统的文档,并且确实仍然可以使用,但是这里是使用新方法进行配置…

div alert html,基于jQuery的弹出消息插件 DivAlert之旅(一)

想着自己学习Javascript,以及Ajax、jQuery等已经有一段时间了,不过貌似还没有写过一个插件,看到jQuery官网上那么多令人眼前一亮的插件,自己今天也动心说是不是能够写一个类似的插件来瞧瞧,了解了jQuery插件的基本格式…

C++对象的动态建立

C对象的动态建立和释放在C中,如果定义的对象是静态的,在程序运行过程中,对象所占的空间是不能随时释放的。为提高内存空间的利用率,希望在需要用到对象时才建立对象,在不需要用该对象时就撤销它,释放它所占…