文章目录
- 一、配置token
- 二、调用API
- 1、获取项目的projects
- 2、常用接口-curl调用示例
- 3、python-gitlab的示例
前提:代码使用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中的所有场景,如有问题和不足欢迎指正。