版本管理之gitlab实践教程:基础篇(11)

本文详述了使用GitLab API进行项目管理的基础操作,包括创建、查询项目,设置可见性,创建用户及组,并进行权限管理。通过实例展示了如何动态管理GitLab项目、用户和组,以及在不同组件间的关联设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章介绍一下gitlab与项目相关的操作,我们会从api入手,学习项目的增删改查,如果通过gitlab的页面操作当然这些会很简单,但是如果在自己的项目中与gitlab的集成比较紧密的情况下,很多时候则可能需要通过调用api来自动完成一些操作,从这篇文章开始也会使用新的gitlab的版本,同时会将easypack上与gitlab-ce的关联版本进行更新。

gitlab的v3与项目相关的api

项番 说明
No.1 列出所有项目
No.2 对某一项目进行增删查
No.3 获取项目事件
No.4 获取某一项目的所有成员列表
No.5 对某一成员进行增删改查
No.6 对项目的webhooks进行增删改查
No.7 获取所有分支信息
No.8 获取某一个分支信息
No.9 对分支进行保护操作或者取消保护操作

gitlab的v4与项目相关的api

gitlab目前的版本在gitlab9,而相关的api也升到了v4,相比之下,项目相关的功能有了如下的一些强化:

项番 说明 命令
No.1 获取所有项目 GET /projects
No.2 获取制定用户的项目信息,会根据用户的权限显示其能所看到的 GET /users/:user_id/projects
No.3 显示某一特定项目 GET /projects/:id
No.4 获取某一项目的用户列表 GET /projects/:id/users
No.5 创建项目 POST /projects
No.6 为某个特定用户创建项目,此操作仅admin可用 POST /projects/user/:user_id
No.7 更新项目 PUT /projects/:id
No.8 Fork一个项目 POST /projects/:id/fork
No.9 列出某一项目的fork信息,此功能为10.1版本引入 GET /projects/:id/forks
No.10 对某一项目进行加星 POST /projects/:id/star
No.11 取消对某一项目的加星 POST /projects/:id/unstar
No.12 对项目进行归档操作 POST /projects/:id/archive
No.13 撤销对项目的归档操作 POST /projects/:id/unarchive
No.14 删除某一指定项目包括所有关联资源比如issue和merge request等 DELETE /projects/:id
No.15 为merge request或者issue或者comment等操作提供上传文件操作 POST /projects/:id/uploads
No.16 为某个group设定项目共享 POST /projects/:id/share
No.17 删除为某个group提供的项目共享 DELETE /projects/:id/share/:group_id
No.18 获取项目hook列表 GET /projects/:id/hooks
No.19 获取某个特定项目的某个hook信息 GET /projects/:id/hooks/:hook_id
No.20 添加项目hook POST /projects/:id/hooks
No.21 更新项目hook信息 PUT /projects/:id/hooks/:hook_id
No.22 删除项目hook信息 DELETE /projects/:id/hooks/:hook_id
No.23 在既存的项目中创建fork关联 POST /projects/:id/fork/:forked_from_id
No.24 删除fork关联 DELETE /projects/:id/fork
No.25 按条件查询项目 GET /projects通过search属性指定
No.26 对某个项目进行housekeeping操作,此功能为9.0开始引入 POST /projects/:id/housekeeping
No.26 列举某一项目仓库下的所有分支 GET /projects/:id/repository/branches
No.27 获取某一特定分支信息 GET /projects/:id/repository/branches/:branch
No.28 设定保护分支 PUT /projects/:id/repository/branches/:branch/protect 此api在后续版本中将会被POST /projects/:id/protected_branches所代替
No.29 取消保护分支 PUT /projects/:id/repository/branches/:branch/unprotect 此api在后续版本中将会被DELETE /projects/:id/protected_branches/:name所替代
No.30 创建项目仓库分支 POST /projects/:id/repository/branches
No.31 删除项目仓库分支 DELETE /projects/:id/repository/branches/:branch
No.32 获取项目成员列表信息 GET /projects/:id/members 类似可用GET /groups/:id/members用于获得group成员列表信息
No.33 获取某一项目成员信息 GET /projects/:id/members/:user_id 类似可用GET /groups/:id/members/:user_id获得某一group成员信息
No.34 添加某一项目成员信息 POST /projects/:id/members 类似可用POST /groups/:id/members添加某一group成员信息
No.35 更新某一项目成员信息 PUT /projects/:id/members/:user_id 类似可用PUT /groups/:id/members/:user_id更新某一group成员信息
No.36 删除某一项目成员信息 DELETE /projects/:id/members/:user_id 类似可用DELETE /groups/:id/members/:user_id获得某一group成员信息

gitlab版本

可使用官方gitlab-ce镜像,也可以使用docker pull liumiaocn/gitlab的镜像,目前版本在10.4.2

[root@devops ~]# docker pull liumiaocn/gitlab
Using default tag: latest
latest: Pulling from liumiaocn/gitlab
1be7f2b886e8: Pull complete 
...
Digest: sha256:fcca9cddd0506e91961a043561b40fb166dbdcd6f4a254d80853d4bb92cabed3
Status: Downloaded newer image for liumiaocn/gitlab:latest
[root@devops ~]#

这里写图片描述

事前准备

生成token
这里写图片描述

确认生成的token信息,因为只会显示一次,需要记住,token相当于用户名和密码的合集,千万注意要和银行卡密码一样进行慎重管理。
这里写图片描述

api使用

接下来将会使用api进行常见的项目操作

确认当前gitlab上的项目信息

[root@devops ~]# curl --request GET --header "PRIVATE-TOKEN: sqiSUhn3tHYXe8nSGRDi" "http://127.0.0.1:32001/api/v4/projects"
[][root@devops ~]# 

可以看到返回的为[],一个空的列表集合

创建一个项目

创建项目的时候用POST的方法/projects即可,但需要指定至少name或者path中的一个,其余则会根据具体情况进行缺省设定,比如group或者namespace如果不指定或者获取不到信息则会缺省设定成当前用户的namespace,没有做特殊设定则是和用户名一致。

[root@devops ~]# curl --request GET --header "PRIVATE-TOKEN: sqiSUhn3tHYXe8nSGRDi" "http://127.0.0.1:32001/api/v4/projects"
[{
  "id":1,"description":null,"name":"demodefaultprj","name_with_namespace":"Administrator / demodefaultprj","path":"demodefaultprj","path_with_namespace":"root/demodefaultprj","created_at":"2018-01-30T16:19:01.367Z","default_branch":null,"tag_list":[],"ssh_url_to_repo":"git@3ff5a6afdc80:root/demodefaultprj.git","http_url_to_repo":"http://3ff5a6afdc80/root/demodefaultprj.git","web_url":"http://3ff5a6afdc80/root/demodefaultprj","avatar_url":null,"star_count":0,"forks_count":0,"last_activity_at":"2018-01-30T16:19:01.367Z","_links":{
  "self":"http://3ff5a6afdc80/api/v4/projects/1","issues":"http://3ff5a6afdc80/api/v4/projects/1/issues","merge_requests":"http://3ff5a6afdc80/api/v4/projects/1/merge_requests","repo_branches":"http://3ff5a6afdc80/api/v4/projects/1/repository/branches","labels":"http://3ff5a6afdc80/api/v4/projects/1/labels","events":"http://3ff5a6afdc80/api/v4/projects/1/events","members":"http://3ff5a6afdc80/api/v4/projects/1/members"},"archived":false,"visibility":"private","owner":{
  "id":1,"name":"Administrator","username":"root","state":"active","avatar_url":"http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon","web_url":"http://3ff5a6afdc80/root"},"resolve_outdated_diff_discussions":false,"container_registry_enabled":true,"issues_enabled":true,"merge_requests_enabled":true,"wiki_enabled":true,"jobs_enabled":true,"snippets_enabled":true,"shared_runners_enabled":true,"lfs_enabled":true,"creator_id":1,"namespace":{
  "id":1,"name":"root","path":"root","kind":"user","full_path":"root","parent_id":null},"import_status":"none","open_issues_count":0,"public_jobs":true,"ci_config_path":null,"shared_with_groups":[],"only_allow_merge_if_pipeline_succeeds":false,"request_access_enabled"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值