通过API访问GitLab(提供部分curl、python示例)


前提:代码使用gitlab管理,部署使用的是gitlab的CI/CD。日常开发发版会通知有权限的测试人员,大家权限不统一,所以准备开发一套工具,输入要部署的项目和流水号,直接触发部署。于是工具就需要调用gitlab的API


以下是本人使用的调用方法,仅供参考

一、配置token

要调用gitlabAPI,需要先配置一个token,具体步骤如下:
1、点击右上角的头像部分,选择Edit profile,会进入用户设置页面
在这里插入图片描述
2、选择“访问参数”,根据以下标注输入各项内容,点击创建,会生成一个访问令牌

在这里插入图片描述
3、生成token后一定要复制保存好,因为之后就看不到这个token了!!!

在这里插入图片描述

二、调用API

gitlabAPI的文档地址:https://docs.gitlab.com/ee/api/api_resources.html

1、获取项目的projects

gitlabAPI操作项目使用的是项目ID,获取项目ID的方式有:

方法一:
	在gitlab中打开你要操作的项目,会看到显示“项目ID”。如果要操作特定的项目,可以直接通过这种方式来获取ID	

在这里插入图片描述

方法二:
	可以使用接口直接查询账号下的所有project信息,用于批量处理
	curl --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects

2、常用接口-curl调用示例

①、获取所有project
curl --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects
-- 默认只会查询第一页数据,可以增加分页参数进行查询
curl --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects?per_page=20&page=2

②、获取所有group
curl --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/groups

③、获取group下project
-- 95 为group对应的ID
curl --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/groups/95/projects

④、获取项目下流水号的jobs
-- 353 为项目(project)对应的ID,63028 为流水号(pipelines)对应的ID
curl --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects/353/pipelines/63028/jobs"

⑤、查询单个job
-- 253973 为流水号中的job对应的ID
curl --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects/353/jobs/253973"

⑥、触发job
curl --request POST "http://127.0.0.1:9090/api/v4/projects/352/jobs/237546/play" --header "PRIVATE-TOKEN: xxxxxx"

⑦、取消job的created状态:
curl --request POST --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects/353/jobs/253964/cancel"

⑧、删除分支
-- branch_name 为要删除的分支名称
curl --request DELETE --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects/353/repository/branches/branch_name"

⑨、合并MR
-- 17 为和并请求的ID
curl --request PUT --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects/353/merge_requests/17/merge" 

⑩、删除MR
curl --request DELETE --header "PRIVATE-TOKEN: xxxxxx" "http://127.0.0.1:9090/api/v4/projects/353/merge_requests/17" 

3、python-gitlab的示例

# 通过命令安装:pip install python-gitlab
import gitlab

# gitlabUrl 项目所在gitlab的域名地址;gitlabToken 上文所介绍生成的token
# 通过project_id获取project对象
project = gitlab.Gitlab('gitlabUrl', private_token='gitlabToken').projects.get('project_id')

# 创建分支,branch-分支名称;ref-源分支/commitID
project.branches.create({"branch": 'branch', "ref": 'ref'})

# 创建合并请求,source_branch-源分支;target_branch-目标分支;remove_source_branch-是否删除源分支
merge_request = project.mergerequests.create(
            {
                'source_branch': 'source_branch',
                'target_branch': 'target_branch',
                'title': '创建合并请求',
                'remove_source_branch': False
            }
        )
# 批准、合入
merge_request.approve()
merge_request.merge()

# 修改合并请求状态 'close' or 'reopen',并保存修改
merge_request.state_event = 'close'
merge_request.save()

由于涉及的业务范围较小,无法全面覆盖到API中的所有场景,如有问题和不足欢迎指正。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值