发布 API

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署

使用此 API 操作发布条目

要将链接作为发布资产进行操作,请参见 Release Links API

认证#

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

  1. 使用 PRIVATE-TOKEN 头的个人访问令牌
  2. 使用 JOB-TOKEN 头的极狐GitLab CI/CD 作业令牌 $CI_JOB_TOKEN

列出发布#

返回按 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": "c3ffedec13af470e0f71cf52c6cde4d", 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}

下载发布资产#

History

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

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"

获取最新发布#

History

可以通过永久的 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 的使用是可选的,对 ?order_by=semver 的支持正在 issue 352945 中跟踪。

创建发布#

创建发布。需要对项目具有开发者级别的访问权限才能创建发布。

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":"Super nice release", 4 "name":"New release", 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":"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":"079e90101242458910cccd35eab0e211dfc359c0", 17 "short_id":"079e9010", 18 "title":"Update README.md", 19 "created_at":"2019-01-03T01:55:38.000Z", 20 "parent_ids":[ 21 "f8d3d94cbd347e924aa7b715845e439d00e80ca4" 22 ], 23 "message":"Update README.md", 24 "author_name":"Administrator", 25 "author_email":"admin@example.com", 26 "authored_date":"2019-01-03T01:55:38.000Z", 27 "committer_name":"Administrator", 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":"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": 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":"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 "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: Premium, Ultimate
  • Offering: GitLab Self-Managed, GitLab Dedicated

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

收集发布证据#

  • Tier: Premium, Ultimate
  • Offering: GitLab Self-Managed, GitLab Dedicated

为现有发布创建证据。

plaintext
POST /projects/:id/releases/:tag_name/evidence
属性类型必需描述
idinteger/string项目的 ID 或URL 编码路径
tag_namestring发布关联的 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

更新发布#

History
    • 在极狐GitLab 14.5 中更改为允许 JOB-TOKEN

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

plaintext
PUT /projects/:id/releases/:tag_name
属性类型必需描述
idinteger/string项目的 ID 或URL 编码路径
tag_namestring发布关联的 Git 标签。
namestring发布名称。
descriptionstring发布的描述。您可以使用 Markdown
milestonesarray of string与发布关联的每个里程碑的标题。极狐GitLab 专业版客户可以指定群组里程碑。要从发布中删除所有里程碑,请指定 []
released_atdatetime发布已准备就绪的日期。预期为 ISO 8601 格式(2019-03-15T08:00:00Z)。

示例请求:

shell
curl --header 'Content-Type: application/json' --request PUT --data '{"name": "new 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- 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":"new 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":"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":53, 34 "iid":3, 35 "project_id":24, 36 "title":"v1.2", 37 "description":"Voluptate fugiat possimus quis quod aliquam expedita.", 38 "state":"active", 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
属性类型必需描述
idinteger/string项目的 ID 或URL 编码路径
tag_namestring发布关联的 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- 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":"new 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":"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 "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}

即将发布#

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

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

历史发布#

History

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

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