gitlab通过api添加项目

一 背景介绍

  • repo库迁移及批量创建gitlab项目

二 软件版本

[root@gitlab ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
10.5.5

三 创建group

3.1 官方文件

  • https://docs.gitlab.com/ee/api/groups.html

3.2 查询group

  • 默认返回20个结果,超过20条需要指定per_page
点击查看代码
[root@gitlab ~]# curl --header "PRIVATE-TOKEN: <your_access_token>" "http://gitlab.example.com/api/v4/groups?per_page=100"
{
    "id": 121,
    "name": "hardware_android7",
    "path": "hardware_android7",
    "description": "",
    "visibility": "private",
    "lfs_enabled": true,
    "avatar_url": null,
    "web_url": "http://gitlab.example.com/groups/hardware_android7",
    "request_access_enabled": false,
    "full_name": "hardware_android7",
    "full_path": "hardware_android7",
    "parent_id": null
  },

3.3 查询subgroup

  • id  #组的id
  • 默认返回20条结果,超过20条需要指定per_page
[root@gitlab ~]# curl --header "PRIVATE-TOKEN: <your_access_token>" "http://gitlab.example.com/api/v4/groups/:id/subgroups"

3.4 查询组下的项目

  • id  #组的id
  • 默认返回20条结果,超过20条需要指定per_page
[root@gitlab ~]# curl --header "PRIVATE-TOKEN: <your_access_token>" "http://gitlab.example.com/api/v4/groups/:id/projects"

3.5 创建group

3.5.1 创建group

  • path   #组路径
  • name  #组名字
点击查看代码
[root@gitlab ~]# curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data '{"path": "wgs_android", "name": "wgs_android"}' "http://gitlab.example.com/api/v4/groups/"
{
	"id": 124,
	"name": "wgs_android",
	"path": "wgs_android",
	"description": "",
	"visibility": "private",
	"lfs_enabled": true,
	"avatar_url": null,
	"web_url": "http://gitlab.example.com/groups/wgs_android",
	"request_access_enabled": false,
	"full_name": "wgs_android",
	"full_path": "wgs_android",
	"parent_id": null,
	"projects": [],
	"shared_projects": []
}

3.5.2 验证创建group

  • id #组id=124
点击查看代码
[root@gitlab ~]# curl --header "PRIVATE-TOKEN: <your_access_token>" "http://gitlab.example.com/api/v4/groups/124"
{
  "id": 124,
  "name": "wgs_android",
  "path": "wgs_android",
  "description": "",
  "visibility": "private",
  "lfs_enabled": true,
  "avatar_url": null,
  "web_url": "http://gitlab.example.com/groups/wgs_android",
  "request_access_enabled": false,
  "full_name": "wgs_android",
  "full_path": "wgs_android",
  "parent_id": null,
  "projects": [],
  "shared_projects": []
}

3.5.3 创建subgroup

  • path    # 子组路径
  • name  #子组名字
  • parent_id  #父组id
点击查看代码
[root@gitlab ~]# curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data '{"path": "android", "name": "android", "parent_id": 121 }' "https://gitlab.example.com/api/v4/groups/"
{
	"id": 123,
	"name": "android",
	"path": "android",
	"description": "",
	"visibility": "private",
	"lfs_enabled": true,
	"avatar_url": null,
	"web_url": "http://gitlab.example.com/groups/hardware_android7/android",
	"request_access_enabled": false,
	"full_name": "hardware_android7 / android",
	"full_path": "hardware_android7/android",
	"parent_id": 121,
	"projects": [],
	"shared_projects": []
}

3.5.4 验证结果

  • id  #组id=123
点击查看代码
[root@gitlab ~]# curl --header "PRIVATE-TOKEN: <your_access_token>" "http://gitlab.example.com/api/v4/groups/123" 
{
  "id": 123,
  "name": "android",
  "path": "android",
  "description": "",
  "visibility": "private",
  "lfs_enabled": true,
  "avatar_url": null,
  "web_url": "http://gitlab.example.com/groups/hardware_android7/android",
  "request_access_enabled": false,
  "full_name": "hardware_android7 / android",
  "full_path": "hardware_android7/android",
  "parent_id": 121,
  "projects": [],
  "shared_projects": []
}

四 创建项目

4.1 官方文档

  • https://docs.gitlab.com/ee/api/projects.html

4.2 查询所有项目

[root@gitlab ~]# curl --header "PRIVATE-TOKEN: <your_access_token>" "http://gitlab.example.com/api/v4/projects"

4.3 创建项目

  • name  #项目名称
  • namespace_id  #项目所在组id
点击查看代码
[root@gitlab ~]# curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --data "name=RKDocs&namespace_id=123" http://gitlab.example.com/api/v4/projects
{
	"id": 381,
	"description": null,
	"name": "RKDocs",
	"name_with_namespace": "hardware_android7 / android / RKDocs",
	"path": "rkdocs",
	"path_with_namespace": "hardware_android7/android/rkdocs",
	"created_at": "2021-08-30T09:33:34.221Z",
	"default_branch": null,
	"tag_list": [],
	"ssh_url_to_repo": "git@gitlab.example.com:hardware_android7/android/rkdocs.git",
	"http_url_to_repo": "http://gitlab.example.com.com/hardware_android7/android/rkdocs.git",
	"web_url": "http://gitlab.example.com/hardware_android7/android/rkdocs",
	"avatar_url": null,
	"star_count": 0,
	"forks_count": 0,
	"last_activity_at": "2021-08-30T09:33:34.221Z",
	"_links": {
		"self": "http://gitlab.example.com/api/v4/projects/381",
		"issues": "http://gitlab.example.com/api/v4/projects/381/issues",
		"merge_requests": "http://gitlab.example.com/api/v4/projects/381/merge_requests",
		"repo_branches": "http://gitlab.example.com/api/v4/projects/381/repository/branches",
		"labels": "http://gitlab.example.com/api/v4/projects/381/labels",
		"events": "http://gitlab.example.com/api/v4/projects/381/events",
		"members": "http://gitlab.example.com/api/v4/projects/381/members"
	},
	"archived": false,
	"visibility": "private",
	"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": 18,
	"namespace": {
		"id": 123,
		"name": "android",
		"path": "android",
		"kind": "group",
		"full_path": "hardware_android7/android",
		"parent_id": 121
	},
	"import_status": "none",
	"import_error": null,
	"open_issues_count": 0,
	"runners_token": "EeugCfZog-5ymjoZGAHQ",
	"public_jobs": true,
	"ci_config_path": null,
	"shared_with_groups": [],
	"only_allow_merge_if_pipeline_succeeds": false,
	"request_access_enabled": false,
	"only_allow_merge_if_all_discussions_are_resolved": false,
	"printing_merge_request_link_enabled": true
}

4.4 验证创建项目

  • id  #项目id=381
点击查看代码
[root@gitlab ~]# curl --header "PRIVATE-TOKEN: <your_access_token>" "http://gitlab.example.com.com/api/v4/projects/381"
{
  "id": 381,
  "description": null,
  "name": "RKDocs",
  "name_with_namespace": "hardware_android7 / android / RKDocs",
  "path": "rkdocs",
  "path_with_namespace": "hardware_android7/android/rkdocs",
  "created_at": "2021-08-30T09:33:34.221Z",
  "default_branch": null,
  "tag_list": [],
  "ssh_url_to_repo": "git@gitlab.example.com:hardware_android7/android/rkdocs.git",
  "http_url_to_repo": "http://gitlab.example.com/hardware_android7/android/rkdocs.git",
  "web_url": "http://gitlab.example.com/hardware_android7/android/rkdocs",
  "avatar_url": null,
  "star_count": 0,
  "forks_count": 0,
  "last_activity_at": "2021-08-30T09:33:34.221Z",
  "_links": {
    "self": "http://gitlab.example.com/api/v4/projects/381",
    "issues": "http://gitlab.example.com/api/v4/projects/381/issues",
    "merge_requests": "http://gitlab.example.com/api/v4/projects/381/merge_requests",
    "repo_branches": "http://gitlab.example.com/api/v4/projects/381/repository/branches",
    "labels": "http://gitlab.example.com/api/v4/projects/381/labels",
    "events": "http://gitlab.example.com/api/v4/projects/381/events",
    "members": "http://gitlab.example.com/api/v4/projects/381/members"
  },
  "archived": false,
  "visibility": "private",
  "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": 18,
  "namespace": {
    "id": 123,
    "name": "android",
    "path": "android",
    "kind": "group",
    "full_path": "hardware_android7/android",
    "parent_id": 121
  },
  "import_status": "none",
  "import_error": null,
  "open_issues_count": 0,
  "runners_token": "EeugCfZog-5ymjoZGAHQ",
  "public_jobs": true,
  "ci_config_path": null,
  "shared_with_groups": [],
  "only_allow_merge_if_pipeline_succeeds": false,
  "request_access_enabled": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "printing_merge_request_link_enabled": true,
  "permissions": {
    "project_access": null,
    "group_access": {
      "access_level": 50,
      "notification_level": 3
    }
  }
}

posted @ 2021-08-30 18:32  小吉猫  阅读(1296)  评论(0编辑  收藏  举报