极狐 GitLab

项目发布 API

Tier: 基础版,专业版,旗舰版

Offering: JihuLab.com,私有化部署

使用此 API 与项目的 发布 进行交互。

要与群组的发布进行交互,请参见 [群组发布 API](../group_releases.md)。 要将链接作为发布资产进行交互,请参见 [发布链接 API](links.md)。

认证#

对于认证,发布 API 接受以下任一方式:

列出发布#

返回按 released_at 排序的分页发布列表。

plaintext
GET /projects/:id/releases
属性类型是否必需描述
idinteger 或 string项目的 ID 或 URL 编码路径
order_bystring排序依据的字段。可以是 released_at(默认)或 created_at
sortstring排序方向。desc(默认)表示降序,asc 表示升序。
include_html_descriptionboolean如果为 true,响应中包含发布描述 HTML 渲染后的 Markdown。

如果成功,返回 200 OK 以及以下响应属性:

属性类型描述
[]._linksobject发布的链接。
[]._links.closed_issues_urlstring发布已关闭议题的 HTTP URL。
[]._links.closed_merge_requests_urlstring发布已关闭合并请求的 HTTP URL。
[]._links.edit_urlstring发布编辑页的 HTTP URL。
[]._links.merged_merge_requests_urlstring发布已合并合并请求的 HTTP URL。
[]._links.opened_issues_urlstring发布开放议题的 HTTP URL。
[]._links.opened_merge_requests_urlstring发布开放合并请求的 HTTP URL。
[]._links.selfstring发布的 HTTP URL。

示例请求:

shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases"

示例响应:

json
1[ 2 { 3 "tag_name":"v0.2", 4 "description":"## CHANGELOG\r\n\r\n- Escape label and milestone titles to prevent XSS in GLFM autocomplete. !2740\r\n- Prevent private snippets from being embeddable.\r\n- Add subresources removal to member destroy service.", 5 "name":"Awesome app v0.2 beta", 6 "created_at":"2019-01-03T01:56:19.539Z", 7 "released_at":"2019-01-03T01:56:19.539Z", 8 "author":{ 9 "id":1, 10 "name":"Administrator", 11 "username":"root", 12 "state":"active", 13 "avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", 14 "web_url":"https://gitlab.example.com/root" 15 }, 16 "commit":{ 17 "id":"079e90101242458910cccd35eab0e211dfc359c0", 18 "short_id":"079e9010", 19 "title":"Update README.md", 20 "created_at":"2019-01-03T01:55:38.000Z", 21 "parent_ids":[ 22 "f8d3d94cbd347e924aa7b715845e439d00e80ca4" 23 ], 24 "message":"Update README.md", 25 "author_name":"Administrator", 26 "author_email":"admin@example.com", 27 "authored_date":"2019-01-03T01:55:38.000Z", 28 "committer_name":"Administrator", 29 "committer_email":"admin@example.com", 30 "committed_date":"2019-01-03T01:55:38.000Z" 31 }, 32 "milestones": [ 33 { 34 "id":51, 35 "iid":1, 36 "project_id":24, 37 "title":"v1.0-rc", 38 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 39 "state":"closed", 40 "created_at":"2019-07-12T19:45:44.256Z", 41 "updated_at":"2019-07-12T19:45:44.256Z", 42 "due_date":"2019-08-16", 43 "start_date":"2019-07-30", 44 "web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/1", 45 "issue_stats": { 46 "total": 98, 47 "closed": 76 48 } 49 }, 50 { 51 "id":52, 52 "iid":2, 53 "project_id":24, 54 "title":"v1.0", 55 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 56 "state":"closed", 57 "created_at":"2019-07-16T14:00:12.256Z", 58 "updated_at":"2019-07-16T14:00:12.256Z", 59 "due_date":"2019-08-16", 60 "start_date":"2019-07-30", 61 "web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/2", 62 "issue_stats": { 63 "total": 24, 64 "closed": 21 65 } 66 } 67 ], 68 "commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a", 69 "tag_path":"/root/awesome-app/-/tags/v0.11.1", 70 "assets":{ 71 "count":6, 72 "sources":[ 73 { 74 "format":"zip", 75 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.zip" 76 }, 77 { 78 "format":"tar.gz", 79 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.tar.gz" 80 }, 81 { 82 "format":"tar.bz2", 83 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.tar.bz2" 84 }, 85 { 86 "format":"tar", 87 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.tar" 88 } 89 ], 90 "links":[ 91 { 92 "id":2, 93 "name":"awesome-v0.2.msi", 94 "url":"http://192.168.10.15:3000/msi", 95 "link_type":"other" 96 }, 97 { 98 "id":1, 99 "name":"awesome-v0.2.dmg", 100 "url":"http://192.168.10.15:3000", 101 "link_type":"other" 102 } 103 ], 104 "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.2/evidence.json" 105 }, 106 "evidences":[ 107 { 108 "sha": "760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d", 109 "filepath": "https://gitlab.example.com/root/awesome-app/-/releases/v0.2/evidence.json", 110 "collected_at": "2019-01-03T01:56:19.539Z" 111 } 112 ] 113 }, 114 { 115 "tag_name":"v0.1", 116 "description":"## CHANGELOG\r\n\r\n-Remove limit of 100 when searching repository code. !8671\r\n- Show error message when attempting to reopen an MR and there is an open MR for the same branch. !16447 (Akos Gyimesi)\r\n- Fix a bug where internal email pattern wasn't respected. !22516", 117 "name":"Awesome app v0.1 alpha", 118 "created_at":"2019-01-03T01:55:18.203Z", 119 "released_at":"2019-01-03T01:55:18.203Z", 120 "author":{ 121 "id":1, 122 "name":"Administrator", 123 "username":"root", 124 "state":"active", 125 "avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", 126 "web_url":"https://gitlab.example.com/root" 127 }, 128 "commit":{ 129 "id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4", 130 "short_id":"f8d3d94c", 131 "title":"Initial commit", 132 "created_at":"2019-01-03T01:53:28.000Z", 133 "parent_ids":[ 134 135 ], 136 "message":"Initial commit", 137 "author_name":"Administrator", 138 "author_email":"admin@example.com", 139 "authored_date":"2019-01-03T01:53:28.000Z", 140 "committer_name":"Administrator", 141 "committer_email":"admin@example.com", 142 "committed_date":"2019-01-03T01:53:28.000Z" 143 }, 144 "assets":{ 145 "count":4, 146 "sources":[ 147 { 148 "format":"zip", 149 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip" 150 }, 151 { 152 "format":"tar.gz", 153 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz" 154 }, 155 { 156 "format":"tar.bz2", 157 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2" 158 }, 159 { 160 "format":"tar", 161 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar" 162 } 163 ], 164 "links":[ 165 166 ], 167 "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json" 168 }, 169 "evidences":[ 170 { 171 "sha": "c3ffedec13af470e760d6cdfb08790f71cf52c6cde4d", 172 "filepath": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json", 173 "collected_at": "2019-01-03T01:55:18.203Z" 174 } 175 ], 176 "_links": { 177 "closed_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=closed", 178 "closed_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=closed", 179 "edit_url": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/edit", 180 "merged_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=merged", 181 "opened_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=opened", 182 "opened_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=opened", 183 "self": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1" 184 } 185 } 186]

通过标签名称获取发布#

获取给定标签的发布。

plaintext
GET /projects/:id/releases/:tag_name
属性类型是否必需描述
idinteger 或 string项目的 ID 或 URL 编码路径
tag_namestring发布关联的 Git 标签。
include_html_descriptionboolean如果为 true,响应中包含发布描述 HTML 渲染后的 Markdown。

如果成功,返回 200 OK 以及以下响应属性:

属性类型描述
[]._linksobject发布的链接。
[]._links.closed_issues_urlstring发布已关闭议题的 HTTP URL。
[]._links.closed_merge_requests_urlstring发布已关闭合并请求的 HTTP URL。
[]._links.edit_urlstring发布编辑页的 HTTP URL。
[]._links.merged_merge_requests_urlstring发布已合并合并请求的 HTTP URL。
[]._links.opened_issues_urlstring发布开放议题的 HTTP URL。
[]._links.opened_merge_requests_urlstring发布开放合并请求的 HTTP URL。
[]._links.selfstring发布的 HTTP URL。

示例请求:

shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1"

示例响应:

json
1{ 2 "tag_name":"v0.1", 3 "description":"## CHANGELOG\r\n\r\n- Remove limit of 100 when searching repository code. !8671\r\n- Show error message when attempting to reopen an MR and there is an open MR for the same branch. !16447 (Akos Gyimesi)\r\n- Fix a bug where internal email pattern wasn't respected. !22516", 4 "name":"Awesome app v0.1 alpha", 5 "created_at":"2019-01-03T01:55:18.203Z", 6 "released_at":"2019-01-03T01:55:18.203Z", 7 "author":{ 8 "id":1, 9 "name":"Administrator", 10 "username":"root", 11 "state":"active", 12 "avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", 13 "web_url":"https://gitlab.example.com/root" 14 }, 15 "commit":{ 16 "id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4", 17 "short_id":"f8d3d94c", 18 "title":"Initial commit", 19 "created_at":"2019-01-03T01:53:28.000Z", 20 "parent_ids":[ 21 22 ], 23 "message":"Initial commit", 24 "author_name":"Administrator", 25 "author_email":"admin@example.com", 26 "authored_date":"2019-01-03T01:53:28.000Z", 27 "committer_name":"Administrator", 28 "committer_email":"admin@example.com", 29 "committed_date":"2019-01-03T01:53:28.000Z" 30 }, 31 "milestones": [ 32 { 33 "id":51, 34 "iid":1, 35 "project_id":24, 36 "title":"v1.0-rc", 37 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 38 "state":"closed", 39 "created_at":"2019-07-12T19:45:44.256Z", 40 "updated_at":"2019-07-12T19:45:44.256Z", 41 "due_date":"2019-08-16", 42 "start_date":"2019-07-30", 43 "web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/1", 44 "issue_stats": { 45 "total": 98, 46 "closed": 76 47 } 48 }, 49 { 50 "id":52, 51 "iid":2, 52 "project_id":24, 53 "title":"v1.0", 54 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 55 "state":"closed", 56 "created_at":"2019-07-16T14:00:12.256Z", 57 "updated_at":"2019-07-16T14:00:12.256Z", 58 "due_date":"2019-08-16", 59 "start_date":"2019-07-30", 60 "web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/2", 61 "issue_stats": { 62 "total": 24, 63 "closed": 21 64 } 65 } 66 ], 67 "commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a", 68 "tag_path":"/root/awesome-app/-/tags/v0.11.1", 69 "assets":{ 70 "count":5, 71 "sources":[ 72 { 73 "format":"zip", 74 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip" 75 }, 76 { 77 "format":"tar.gz", 78 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz" 79 }, 80 { 81 "format":"tar.bz2", 82 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2" 83 }, 84 { 85 "format":"tar", 86 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar" 87 } 88 ], 89 "links":[ 90 { 91 "id":3, 92 "name":"hoge", 93 "url":"https://gitlab.example.com/root/awesome-app/-/tags/v0.11.1/binaries/linux-amd64", 94 "link_type":"other" 95 } 96 ] 97 }, 98 "evidences":[ 99 { 100 "sha": "760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d", 101 "filepath": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json", 102 "collected_at": "2019-07-16T14:00:12.256Z" 103 }, 104 "_links": { 105 "closed_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=closed", 106 "closed_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=closed", 107 "edit_url": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/edit", 108 "merged_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=merged", 109 "opened_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=opened", 110 "opened_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=opened", 111 "self": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1" 112 } 113 ] 114}

下载发布资产#

版本历史
  • 在极狐GitLab 15.4 引入。

通过以下格式发出请求下载发布资产文件:

plaintext
GET /projects/:id/releases/:tag_name/downloads/:direct_asset_path
属性类型是否必需描述
idinteger 或 string项目的 ID 或 URL 编码路径
tag_namestring发布关联的 Git 标签。
direct_asset_pathstring发布资产文件的路径,如 创建更新 其链接时所指定。

示例请求:

shell
curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1/downloads/bin/asset.exe"

获取最新发布#

版本历史
  • 在极狐GitLab 15.4 引入。

最新发布信息可通过永久 API URL 访问。

URL 格式为:

plaintext
GET /projects/:id/releases/permalink/latest

要调用任何其他需要发布标签的 GET API,请将后缀追加到 permalink/latest API 路径。

例如,要获取最新的 发布证据,您可以使用:

plaintext
GET /projects/:id/releases/permalink/latest/evidence

另一个例子是 下载资产 的最新发布,您可以使用:

plaintext
GET /projects/:id/releases/permalink/latest/downloads/bin/asset.exe

排序偏好#

默认情况下,极狐GitLab 使用 released_at 时间获取发布。使用查询参数 ?order_by=released_at 是可选的。

创建发布#

创建发布。创建发布需要项目的开发者级别访问权限。

plaintext
POST /projects/:id/releases
属性类型是否必需描述
idinteger 或 string项目的 ID 或 URL 编码路径
namestring发布名称。
tag_namestring创建发布所使用的标签。
tag_messagestring如果创建新的注释标签,要使用的消息。
descriptionstring发布的描述。您可以使用 Markdown
refstring是,如果 tag_name 不存在如果 tag_name 中指定的标签不存在,则从 ref 创建发布并使用 tag_name 进行标记。它可以是提交 SHA、另一个标签名称或分支名称。
milestonesarray of string发布关联的每个里程碑的标题。极狐GitLab 专业版 客户可以指定群组里程碑。
assets:linksarray of hash资产链接的数组。
assets:links:namestringassets:links 必需链接的名称。链接名称在发布内必须唯一。
assets:links:urlstringassets:links 必需链接的 URL。链接 URL 在发布内必须唯一。
assets:links:direct_asset_pathstring直接资产链接 的可选路径。
assets:links:link_typestring链接的类型:otherrunbookimagepackage。默认为 other
released_atdatetime发布的日期和时间。默认为当前时间。期望为 ISO 8601 格式(2019-03-15T08:00:00Z)。仅在创建 即将发布历史发布 时提供此字段。

示例请求:

shell
curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: <your_access_token>" \ --data '{ "name": "New release", "tag_name": "v0.3", "description": "Super nice release", "milestones": ["v1.0", "v1.0-rc"], "assets": { "links": [{ "name": "hoge", "url": "https://google.com", "direct_asset_path": "/binaries/linux-amd64", "link_type":"other" }] } }' \ --request POST "https://gitlab.example.com/api/v4/projects/24/releases"

示例响应:

json
1{ 2 "tag_name":"v0.3", 3 "description":"超级棒的发布", 4 "name":"新版本", 5 "created_at":"2019-01-03T02:22:45.118Z", 6 "released_at":"2019-01-03T02:22:45.118Z", 7 "author":{ 8 "id":1, 9 "name":"管理员", 10 "username":"root", 11 "state":"活跃", 12 "avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", 13 "web_url":"https://gitlab.example.com/root" 14 }, 15 "commit":{ 16 "id":"079e90101242458910cccd35eab0e211dfc359c0", 17 "short_id":"079e9010", 18 "title":"更新 README.md", 19 "created_at":"2019-01-03T01:55:38.000Z", 20 "parent_ids":[ 21 "f8d3d94cbd347e924aa7b715845e439d00e80ca4" 22 ], 23 "message":"更新 README.md", 24 "author_name":"管理员", 25 "author_email":"admin@example.com", 26 "authored_date":"2019-01-03T01:55:38.000Z", 27 "committer_name":"管理员", 28 "committer_email":"admin@example.com", 29 "committed_date":"2019-01-03T01:55:38.000Z" 30 }, 31 "milestones": [ 32 { 33 "id":51, 34 "iid":1, 35 "project_id":24, 36 "title":"v1.0-rc", 37 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 38 "state":"已关闭", 39 "created_at":"2019-07-12T19:45:44.256Z", 40 "updated_at":"2019-07-12T19:45:44.256Z", 41 "due_date":"2019-08-16", 42 "start_date":"2019-07-30", 43 "web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/1", 44 "issue_stats": { 45 "total": 99, 46 "closed": 76 47 } 48 }, 49 { 50 "id":52, 51 "iid":2, 52 "project_id":24, 53 "title":"v1.0", 54 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 55 "state":"已关闭", 56 "created_at":"2019-07-16T14:00:12.256Z", 57 "updated_at":"2019-07-16T14:00:12.256Z", 58 "due_date":"2019-08-16", 59 "start_date":"2019-07-30", 60 "web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/2", 61 "issue_stats": { 62 "total": 24, 63 "closed": 21 64 } 65 } 66 ], 67 "commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a", 68 "tag_path":"/root/awesome-app/-/tags/v0.11.1", 69 "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d", 70 "assets":{ 71 "count":5, 72 "sources":[ 73 { 74 "format":"zip", 75 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.zip" 76 }, 77 { 78 "format":"tar.gz", 79 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.tar.gz" 80 }, 81 { 82 "format":"tar.bz2", 83 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.tar.bz2" 84 }, 85 { 86 "format":"tar", 87 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.tar" 88 } 89 ], 90 "links":[ 91 { 92 "id":3, 93 "name":"hoge", 94 "url":"https://gitlab.example.com/root/awesome-app/-/tags/v0.11.1/binaries/linux-amd64", 95 "link_type":"other" 96 } 97 ], 98 "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.3/evidence.json" 99 } 100}

群组里程碑#

Tier: 专业版,旗舰版

Offering: 私有化部署

与项目关联的群组里程碑可以在创建发布更新发布 API 调用的 milestones 数组中指定。只能指定与项目群组关联的里程碑,添加上级群组的里程碑会引发错误。

收集发布证据#

Tier: 专业版,旗舰版

Offering: 私有化部署

为现有发布创建证据。

plaintext
POST /projects/:id/releases/:tag_name/evidence
属性类型是否必需描述
id整数或字符串项目的 ID 或 URL 编码路径
tag_name字符串与该发布关联的 Git 标签。

示例请求:

shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1/evidence"

示例响应:

json
200

更新发布#

版本历史
  • 在极狐GitLab 14.5 中变更为允许使用 JOB-TOKEN

更新一个发布。更新发布需要对项目具有开发者级别的访问权限。

plaintext
PUT /projects/:id/releases/:tag_name
属性类型是否必需描述
id整数或字符串项目的 ID 或 URL 编码路径
tag_name字符串与该发布关联的 Git 标签。
name字符串发布名称。
description字符串发布的描述。你可以使用 Markdown
milestones字符串数组要与发布关联的每个里程碑的标题。极狐GitLab 专业版客户可以指定群组里程碑。要从发布中移除所有里程碑,请指定 []
released_at日期时间发布准备就绪的日期。应为 ISO 8601 格式 (2019-03-15T08:00:00Z)。

示例请求:

shell
curl --header 'Content-Type: application/json' --request PUT --data '{"name": "新名称", "milestones": ["v1.2"]}' \ --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1"

示例响应:

json
1{ 2 "tag_name":"v0.1", 3 "description":"## CHANGELOG\r\n\r\n- 移除搜索仓库代码时的 100 条限制。!8671\r\n- 当尝试重新打开一个 MR 但同一分支已有打开的 MR 时显示错误信息。!16447 (Akos Gyimesi)\r\n- 修复内部电子邮件模式未被遵循的错误。!22516", 4 "name":"新名称", 5 "created_at":"2019-01-03T01:55:18.203Z", 6 "released_at":"2019-01-03T01:55:18.203Z", 7 "author":{ 8 "id":1, 9 "name":"管理员", 10 "username":"root", 11 "state":"活跃", 12 "avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", 13 "web_url":"https://gitlab.example.com/root" 14 }, 15 "commit":{ 16 "id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4", 17 "short_id":"f8d3d94c", 18 "title":"初始提交", 19 "created_at":"2019-01-03T01:53:28.000Z", 20 "parent_ids":[ 21 22 ], 23 "message":"初始提交", 24 "author_name":"管理员", 25 "author_email":"admin@example.com", 26 "authored_date":"2019-01-03T01:53:28.000Z", 27 "committer_name":"管理员", 28 "committer_email":"admin@example.com", 29 "committed_date":"2019-01-03T01:53:28.000Z" 30 }, 31 "milestones": [ 32 { 33 "id":53, 34 "iid":3, 35 "project_id":24, 36 "title":"v1.2", 37 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 38 "state":"活跃", 39 "created_at":"2019-09-01T13:00:00.256Z", 40 "updated_at":"2019-09-01T13:00:00.256Z", 41 "due_date":"2019-09-20", 42 "start_date":"2019-09-05", 43 "web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/3", 44 "issue_stats": { 45 "opened": 11, 46 "closed": 78 47 } 48 } 49 ], 50 "commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a", 51 "tag_path":"/root/awesome-app/-/tags/v0.11.1", 52 "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d", 53 "assets":{ 54 "count":4, 55 "sources":[ 56 { 57 "format":"zip", 58 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip" 59 }, 60 { 61 "format":"tar.gz", 62 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz" 63 }, 64 { 65 "format":"tar.bz2", 66 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2" 67 }, 68 { 69 "format":"tar", 70 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar" 71 } 72 ], 73 "links":[ 74 75 ], 76 "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json" 77 } 78}

删除发布#

删除一个发布。删除发布不会删除关联的标签。删除发布需要对项目具有维护者级别的访问权限。

plaintext
DELETE /projects/:id/releases/:tag_name
属性类型是否必需描述
id整数或字符串项目的 ID 或 URL 编码路径
tag_name字符串与该发布关联的 Git 标签。

示例请求:

shell
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1"

示例响应:

json
1{ 2 "tag_name":"v0.1", 3 "description":"## CHANGELOG\r\n\r\n- 移除搜索仓库代码时的 100 条限制。!8671\r\n- 当尝试重新打开一个 MR 但同一分支已有打开的 MR 时显示错误信息。!16447 (Akos Gyimesi)\r\n- 修复内部电子邮件模式未被遵循的错误。!22516", 4 "name":"新名称", 5 "created_at":"2019-01-03T01:55:18.203Z", 6 "released_at":"2019-01-03T01:55:18.203Z", 7 "author":{ 8 "id":1, 9 "name":"管理员", 10 "username":"root", 11 "state":"活跃", 12 "avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", 13 "web_url":"https://gitlab.example.com/root" 14 }, 15 "commit":{ 16 "id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4", 17 "short_id":"f8d3d94c", 18 "title":"初始提交", 19 "created_at":"2019-01-03T01:53:28.000Z", 20 "parent_ids":[ 21 22 ], 23 "message":"初始提交", 24 "author_name":"管理员", 25 "author_email":"admin@example.com", 26 "authored_date":"2019-01-03T01:53:28.000Z", 27 "committer_name":"管理员", 28 "committer_email":"admin@example.com", 29 "committed_date":"2019-01-03T01:53:28.000Z" 30 }, 31 "commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a", 32 "tag_path":"/root/awesome-app/-/tags/v0.11.1", 33 "evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d", 34 "assets":{ 35 "count":4, 36 "sources":[ 37 { 38 "format":"zip", 39 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip" 40 }, 41 { 42 "format":"tar.gz", 43 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz" 44 }, 45 { 46 "format":"tar.bz2", 47 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2" 48 }, 49 { 50 "format":"tar", 51 "url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar" 52 } 53 ], 54 "links":[ 55 56 ], 57 "evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json" 58 } 59}

即将发布的版本#

released_at 属性设置为未来日期的发布,在 UI 中 会被标记为 即将发布

此外,如果从 API 请求发布列表,对于每个 release_at 属性设置为未来日期的发布,响应中会额外返回一个 upcoming_release 属性(设置为 true)。

历史发布#

版本历史
  • 在极狐GitLab 15.2 中引入

released_at 属性设置为过去日期的发布,在 UI 中 会被标记为 历史发布

此外,如果从 API 请求发布列表,对于每个 release_at 属性设置为过去日期的发布,响应中会额外返回一个 historical_release 属性(设置为 true)。