릴리즈 API
이 API를 사용하여 릴리즈 항목을 조작하십시오.
릴리즈 자산으로서 링크를 조작하려면 릴리즈 링크 API를 참조하십시오.
인증
인증을 위해 릴리즈 API는 다음 중 하나를 허용합니다:
-
PRIVATE-TOKEN
헤더를 사용하여 개인 접근 토큰. -
JOB-TOKEN
헤더를 사용하여 GitLab CI/CD 작업 토큰$CI_JOB_TOKEN
.
릴리즈 목록
released_at
으로 정렬된 페이지 네이션된 릴리즈 목록을 반환합니다.
GET /projects/:id/releases
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩 경로. |
order_by |
string | 아니요 | 사용할 정렬 기준. 기본값은 released_at 입니다. 또는 created_at . |
sort |
string | 아니요 | 정렬 방향. 기본값은 내림차순(desc ) 또는 오름차순(asc )입니다. |
include_html_description |
boolean | 아니요 |
true 인 경우, 응답에 릴리즈 설명의 HTML 렌더링 Markdown이 포함됩니다. |
성공하면 200 OK
와 다음 응답 속성을 반환합니다:
속성 | 유형 | 설명 |
---|---|---|
[]._links |
object | 릴리즈의 링크. |
[]._links.closed_issues_url |
string | 릴리즈의 닫힌 이슈에 대한 HTTP URL. |
[]._links.closed_merge_requests_url |
string | 릴리즈의 닫힌 머지 요청에 대한 HTTP URL. |
[]._links.edit_url |
string | 릴리즈의 편집 페이지에 대한 HTTP URL. |
[]._links.merged_merge_requests_url |
string | 릴리즈의 병합된 머지 요청에 대한 HTTP URL. |
[]._links.opened_issues_url |
string | 릴리즈의 열린 이슈에 대한 HTTP URL. |
[]._links.opened_merge_requests_url |
string | 릴리즈의 열린 머지 요청에 대한 HTTP URL. |
[]._links.self |
string | 릴리즈에 대한 HTTP URL. |
예제 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases"
예제 응답:
[
{
"tag_name":"v0.2",
"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.",
"name":"Awesome app v0.2 beta",
"created_at":"2019-01-03T01:56:19.539Z",
"released_at":"2019-01-03T01:56:19.539Z",
"author":{
"id":1,
"name":"Administrator",
"username":"root",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/root"
},
"commit":{
"id":"079e90101242458910cccd35eab0e211dfc359c0",
"short_id":"079e9010",
"title":"Update README.md",
"created_at":"2019-01-03T01:55:38.000Z",
"parent_ids":[
"f8d3d94cbd347e924aa7b715845e439d00e80ca4"
],
"message":"Update README.md",
"author_name":"Administrator",
"author_email":"admin@example.com",
"authored_date":"2019-01-03T01:55:38.000Z",
"committer_name":"Administrator",
"committer_email":"admin@example.com",
"committed_date":"2019-01-03T01:55:38.000Z"
},
"milestones": [
{
"id":51,
"iid":1,
"project_id":24,
"title":"v1.0-rc",
"description":"Voluptate fugiat possimus quis quod aliquam expedita.",
"state":"closed",
"created_at":"2019-07-12T19:45:44.256Z",
"updated_at":"2019-07-12T19:45:44.256Z",
"due_date":"2019-08-16",
"start_date":"2019-07-30",
"web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/1",
"issue_stats": {
"total": 98,
"closed": 76
}
},
{
"id":52,
"iid":2,
"project_id":24,
"title":"v1.0",
"description":"Voluptate fugiat possimus quis quod aliquam expedita.",
"state":"closed",
"created_at":"2019-07-16T14:00:12.256Z",
"updated_at":"2019-07-16T14:00:12.256Z",
"due_date":"2019-08-16",
"start_date":"2019-07-30",
"web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/2",
"issue_stats": {
"total": 24,
"closed": 21
}
}
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
"assets":{
"count":6,
"sources":[
{
"format":"zip",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.zip"
},
{
"format":"tar.gz",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.tar.gz"
},
{
"format":"tar.bz2",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.tar.bz2"
},
{
"format":"tar",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.2/awesome-app-v0.2.tar"
}
],
"links":[
{
"id":2,
"name":"awesome-v0.2.msi",
"url":"http://192.168.10.15:3000/msi",
"link_type":"other"
},
{
"id":1,
"name":"awesome-v0.2.dmg",
"url":"http://192.168.10.15:3000",
"link_type":"other"
}
],
"evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.2/evidence.json"
},
"evidences":[
{
"sha": "760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"filepath": "https://gitlab.example.com/root/awesome-app/-/releases/v0.2/evidence.json",
"collected_at": "2019-01-03T01:56:19.539Z"
}
]
},
{
"tag_name":"v0.1",
"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",
"name":"Awesome app v0.1 alpha",
"created_at":"2019-01-03T01:55:18.203Z",
"released_at":"2019-01-03T01:55:18.203Z",
"author":{
"id":1,
"name":"Administrator",
"username":"root",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/root"
},
"commit":{
"id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4",
"short_id":"f8d3d94c",
"title":"Initial commit",
"created_at":"2019-01-03T01:53:28.000Z",
"parent_ids":[
],
"message":"Initial commit",
"author_name":"Administrator",
"author_email":"admin@example.com",
"authored_date":"2019-01-03T01:53:28.000Z",
"committer_name":"Administrator",
"committer_email":"admin@example.com",
"committed_date":"2019-01-03T01:53:28.000Z"
},
"assets":{
"count":4,
"sources":[
{
"format":"zip",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip"
},
{
"format":"tar.gz",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz"
},
{
"format":"tar.bz2",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2"
},
{
"format":"tar",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar"
}
],
"links":[
],
"evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json"
},
"evidences":[
{
"sha": "c3ffedec13af470e760d6cdfb08790f71cf52c6cde4d",
"filepath": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json",
"collected_at": "2019-01-03T01:55:18.203Z"
}
],
"_links": {
"closed_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=closed",
"closed_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=closed",
"edit_url": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/edit",
"merged_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=merged",
"opened_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=opened",
"opened_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=opened",
"self": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1"
}
}
]
태그 이름으로 릴리스 얻기
주어진 태그에 대한 릴리스를 가져옵니다.
GET /projects/:id/releases/:tag_name
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로입니다. |
tag_name |
문자열 | 예 | 릴리스와 관련된 Git 태그입니다. |
include_html_description |
부울 | 아니요 |
true 인 경우, 응답에는 릴리스 설명의 HTML 렌더링된 Markdown이 포함됩니다. |
성공하면 200 OK
를 반환하고 다음 응답 속성이 포함됩니다:
속성 | 유형 | 설명 |
---|---|---|
[]._links |
객체 | 릴리스의 링크입니다. |
[]._links.closed_issues_url |
문자열 | 릴리스의 닫힌 이슈의 HTTP URL입니다. |
[]._links.closed_merge_requests_url |
문자열 | 릴리스의 닫힌 병합 요청의 HTTP URL입니다. |
[]._links.edit_url |
문자열 | 릴리스의 편집 페이지의 HTTP URL입니다. |
[]._links.merged_merge_requests_url |
문자열 | 릴리스의 병합된 병합 요청의 HTTP URL입니다. |
[]._links.opened_issues_url |
문자열 | 릴리스의 열린 이슈의 HTTP URL입니다. |
[]._links.opened_merge_requests_url |
문자열 | 릴리스의 열린 병합 요청의 HTTP URL입니다. |
[]._links.self |
문자열 | 릴리스의 HTTP URL입니다. |
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1"
예시 응답:
{
"tag_name":"v0.1",
"description":"## CHANGELOG\r\n\r\n- 코드 검색 시 100개의 한계를 제거했습니다. !8671\r\n- MR을 다시 열려고 할 때 동일한 브랜치에 열린 MR이 있는 경우 오류 메시지를 표시합니다. !16447 (Akos Gyimesi)\r\n- 내부 이메일 패턴이 준수되지 않는 버그를 수정했습니다. !22516",
"name":"멋진 앱 v0.1 알파",
"created_at":"2019-01-03T01:55:18.203Z",
"released_at":"2019-01-03T01:55:18.203Z",
"author":{
"id":1,
"name":"관리자",
"username":"root",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/root"
},
"commit":{
"id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4",
"short_id":"f8d3d94c",
"title":"초기 커밋",
"created_at":"2019-01-03T01:53:28.000Z",
"parent_ids":[
],
"message":"초기 커밋",
"author_name":"관리자",
"author_email":"admin@example.com",
"authored_date":"2019-01-03T01:53:28.000Z",
"committer_name":"관리자",
"committer_email":"admin@example.com",
"committed_date":"2019-01-03T01:53:28.000Z"
},
"milestones": [
{
"id":51,
"iid":1,
"project_id":24,
"title":"v1.0-rc",
"description":"Voluptate fugiat possimus quis quod aliquam expedita.",
"state":"closed",
"created_at":"2019-07-12T19:45:44.256Z",
"updated_at":"2019-07-12T19:45:44.256Z",
"due_date":"2019-08-16",
"start_date":"2019-07-30",
"web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/1",
"issue_stats": {
"total": 98,
"closed": 76
}
},
{
"id":52,
"iid":2,
"project_id":24,
"title":"v1.0",
"description":"Voluptate fugiat possimus quis quod aliquam expedita.",
"state":"closed",
"created_at":"2019-07-16T14:00:12.256Z",
"updated_at":"2019-07-16T14:00:12.256Z",
"due_date":"2019-08-16",
"start_date":"2019-07-30",
"web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/2",
"issue_stats": {
"total": 24,
"closed": 21
}
}
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
"assets":{
"count":5,
"sources":[
{
"format":"zip",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip"
},
{
"format":"tar.gz",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz"
},
{
"format":"tar.bz2",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2"
},
{
"format":"tar",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar"
}
],
"links":[
{
"id":3,
"name":"hoge",
"url":"https://gitlab.example.com/root/awesome-app/-/tags/v0.11.1/binaries/linux-amd64",
"link_type":"other"
}
]
},
"evidences":[
{
"sha": "760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"filepath": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json",
"collected_at": "2019-07-16T14:00:12.256Z"
},
"_links": {
"closed_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=closed",
"closed_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=closed",
"edit_url": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1/edit",
"merged_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=merged",
"opened_issues_url": "https://gitlab.example.com/root/awesome-app/-/issues?release_tag=v0.1&scope=all&state=opened",
"opened_merge_requests_url": "https://gitlab.example.com/root/awesome-app/-/merge_requests?release_tag=v0.1&scope=all&state=opened",
"self": "https://gitlab.example.com/root/awesome-app/-/releases/v0.1"
}
]
}
릴리스 자산 다운로드
- GitLab 15.4에서 도입됨.
다음 형식을 사용하여 릴리스 자산 파일을 다운로드합니다:
GET /projects/:id/releases/:tag_name/downloads/:direct_asset_path
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩 경로. |
tag_name |
문자열 | 예 | 릴리스와 연결된 Git 태그입니다. |
direct_asset_path |
문자열 | 예 | 생성 또는 업데이트 시 지정된 릴리스 자산 파일 경로입니다. |
예시 요청:
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 형식은 다음과 같습니다:
GET /projects/:id/releases/permalink/latest
릴리스 태그가 필요한 다른 GET API를 호출하려면 permalink/latest
API 경로에 접미사를 추가하세요.
예를 들어 최신 릴리스 증거를 가져오려면 다음을 사용할 수 있습니다:
GET /projects/:id/releases/permalink/latest/evidence
또한 최신 릴리스의 자산 다운로드를 위해 다음을 사용할 수 있습니다:
GET /projects/:id/releases/permalink/latest/downloads/bin/asset.exe
정렬 기본 설정
기본적으로 GitLab은 released_at
시간을 사용하여 릴리스를 가져옵니다. 쿼리 매개변수 ?order_by=released_at
의 사용은 선택 사항이며, ?order_by=semver
에 대한 지원은 이슈 352945에서 추적됩니다.
릴리스 생성
릴리스를 생성합니다. 릴리스를 생성하려면 프로젝트에 대한 개발자 수준의 액세스가 필요합니다.
POST /projects/:id/releases
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩 경로. |
name |
문자열 | 아니요 | 릴리스 이름. |
tag_name |
문자열 | 예 | 릴리스를 생성하는 데 사용되는 태그. |
tag_message |
문자열 | 아니요 | 새 주석 태그를 생성할 때 사용할 메시지. |
description |
문자열 | 아니요 | 릴리스 설명. Markdown를 사용할 수 있습니다. |
ref |
문자열 | 예, tag_name 이 존재하지 않는 경우 |
tag_name 에 지정된 태그가 존재하지 않으면, 릴리스는 ref 에서 생성되고 tag_name 으로 태그가 만들어집니다. 커밋 SHA, 다른 태그 이름, 또는 브랜치 이름이 될 수 있습니다. |
milestones |
문자열 배열 | 아니요 | 릴리스와 관련된 각 마일스톤의 제목. GitLab Premium 고객은 그룹 마일스톤을 지정할 수 있습니다. |
assets:links |
해시 배열 | 아니요 | 자산 링크의 배열입니다. |
assets:links:name |
문자열 |
assets:links 에 의해 필수 |
링크의 이름입니다. 링크 이름은 릴리스 내에서 고유해야 합니다. |
assets:links:url |
문자열 |
assets:links 에 의해 필수 |
링크의 URL입니다. 링크 URL은 릴리스 내에서 고유해야 합니다. |
assets:links:direct_asset_path |
문자열 | 아니요 | 직접 자산 링크에 대한 선택적 경로입니다. |
assets:links:link_type |
문자열 | 아니요 | 링크의 종류: other , runbook , image , package . 기본값은 other 입니다. |
released_at |
날짜 및 시간 | 아니요 | 릴리스 날짜 및 시간. 기본값은 현재 시간입니다. ISO 8601 형식으로 예상됩니다(2019-03-15T08:00:00Z ). 향후 또는 히스토리 릴리스를 생성하는 경우에만 이 필드를 제공하세요. |
예시 요청:
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"
예시 응답:
{
"tag_name":"v0.3",
"description":"Super nice release",
"name":"New release",
"created_at":"2019-01-03T02:22:45.118Z",
"released_at":"2019-01-03T02:22:45.118Z",
"author":{
"id":1,
"name":"Administrator",
"username":"root",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/root"
},
"commit":{
"id":"079e90101242458910cccd35eab0e211dfc359c0",
"short_id":"079e9010",
"title":"Update README.md",
"created_at":"2019-01-03T01:55:38.000Z",
"parent_ids":[
"f8d3d94cbd347e924aa7b715845e439d00e80ca4"
],
"message":"Update README.md",
"author_name":"Administrator",
"author_email":"admin@example.com",
"authored_date":"2019-01-03T01:55:38.000Z",
"committer_name":"Administrator",
"committer_email":"admin@example.com",
"committed_date":"2019-01-03T01:55:38.000Z"
},
"milestones": [
{
"id":51,
"iid":1,
"project_id":24,
"title":"v1.0-rc",
"description":"Voluptate fugiat possimus quis quod aliquam expedita.",
"state":"closed",
"created_at":"2019-07-12T19:45:44.256Z",
"updated_at":"2019-07-12T19:45:44.256Z",
"due_date":"2019-08-16",
"start_date":"2019-07-30",
"web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/1",
"issue_stats": {
"total": 99,
"closed": 76
}
},
{
"id":52,
"iid":2,
"project_id":24,
"title":"v1.0",
"description":"Voluptate fugiat possimus quis quod aliquam expedita.",
"state":"closed",
"created_at":"2019-07-16T14:00:12.256Z",
"updated_at":"2019-07-16T14:00:12.256Z",
"due_date":"2019-08-16",
"start_date":"2019-07-30",
"web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/2",
"issue_stats": {
"total": 24,
"closed": 21
}
}
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
"evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":5,
"sources":[
{
"format":"zip",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.zip"
},
{
"format":"tar.gz",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.tar.gz"
},
{
"format":"tar.bz2",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.tar.bz2"
},
{
"format":"tar",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.3/awesome-app-v0.3.tar"
}
],
"links":[
{
"id":3,
"name":"hoge",
"url":"https://gitlab.example.com/root/awesome-app/-/tags/v0.11.1/binaries/linux-amd64",
"link_type":"other"
}
],
"evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.3/evidence.json"
}
}
그룹 마일스톤
프로젝트와 연결된 그룹 마일스톤은 릴리즈 생성 및 릴리즈 업데이트 API 호출의 milestones
배열에 지정될 수 있습니다. 프로젝트의 그룹과 관련된 마일스톤만 지정할 수 있으며, 조상 그룹에 대한 마일스톤을 추가하면 오류가 발생합니다.
릴리즈 증거 수집
기존 릴리즈에 대한 증거를 생성합니다.
POST /projects/:id/releases/:tag_name/evidence
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
tag_name |
문자열 | 예 | 릴리즈가 연결된 Git 태그입니다. |
예시 요청:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1/evidence"
예시 응답:
200
릴리즈 업데이트
- 변경됨 GitLab 14.5에서
JOB-TOKEN
사용을 허용합니다.
릴리즈를 업데이트합니다. 릴리즈를 업데이트하려면 프로젝트에 대한 개발자 수준의 액세스가 필요합니다.
PUT /projects/:id/releases/:tag_name
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
tag_name |
문자열 | 예 | 릴리즈가 연결된 Git 태그입니다. |
name |
문자열 | 아니요 | 릴리즈 이름입니다. |
description |
문자열 | 아니요 | 릴리즈의 설명입니다. Markdown을 사용할 수 있습니다. |
milestones |
문자열 배열 | 아니요 | 릴리즈와 연결할 각 마일스톤의 제목입니다. GitLab Premium 고객은 그룹 마일스톤을 지정할 수 있습니다. 릴리즈에서 모든 마일스톤을 제거하려면 [] 를 지정합니다. |
released_at |
날짜시간 | 아니요 | 릴리즈가 준비되었거나 되었던 날짜입니다. ISO 8601 형식(2019-03-15T08:00:00Z )으로 예상됩니다. |
예시 요청:
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"
예시 응답:
{
"tag_name":"v0.1",
"description":"## CHANGELOG\r\n\r\n- 저장소 코드 검색 시 100의 한도를 제거합니다. !8671\r\n- 동일한 브랜치에 대해 열린 MR이 있을 때 MR을 다시 열려고 시도할 때 오류 메시지를 표시합니다. !16447 (Akos Gyimesi)\r\n- 내부 이메일 패턴이 준수되지 않는 버그를 수정합니다. !22516",
"name":"new name",
"created_at":"2019-01-03T01:55:18.203Z",
"released_at":"2019-01-03T01:55:18.203Z",
"author":{
"id":1,
"name":"관리자",
"username":"root",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/root"
},
"commit":{
"id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4",
"short_id":"f8d3d94c",
"title":"최초 커밋",
"created_at":"2019-01-03T01:53:28.000Z",
"parent_ids":[
],
"message":"최초 커밋",
"author_name":"관리자",
"author_email":"admin@example.com",
"authored_date":"2019-01-03T01:53:28.000Z",
"committer_name":"관리자",
"committer_email":"admin@example.com",
"committed_date":"2019-01-03T01:53:28.000Z"
},
"milestones": [
{
"id":53,
"iid":3,
"project_id":24,
"title":"v1.2",
"description":"Voluptate fugiat possimus quis quod aliquam expedita.",
"state":"active",
"created_at":"2019-09-01T13:00:00.256Z",
"updated_at":"2019-09-01T13:00:00.256Z",
"due_date":"2019-09-20",
"start_date":"2019-09-05",
"web_url":"https://gitlab.example.com/root/awesome-app/-/milestones/3",
"issue_stats": {
"opened": 11,
"closed": 78
}
}
],
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
"evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":4,
"sources":[
{
"format":"zip",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip"
},
{
"format":"tar.gz",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz"
},
{
"format":"tar.bz2",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2"
},
{
"format":"tar",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar"
}
],
"links":[
],
"evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json"
}
}
릴리스를 삭제합니다
릴리스를 삭제합니다. 릴리스를 삭제해도 관련된 태그는 삭제되지 않습니다. 릴리스를 삭제하려면 프로젝트에 대한 유지 관리자의 수준의 액세스 권한이 필요합니다.
DELETE /projects/:id/releases/:tag_name
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
integer/string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로입니다. |
tag_name |
string | 예 | 릴리스와 관련된 Git 태그입니다. |
예시 요청:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1"
예시 응답:
{
"tag_name":"v0.1",
"description":"## CHANGELOG\r\n\r\n- 저장소 코드를 검색할 때 100의 한도를 제거했습니다. !8671\r\n- 동일한 브랜치에 대해 열려 있는 MR이 있을 때 MR을 다시 열려고 할 때 오류 메시지를 표시합니다. !16447 (Akos Gyimesi)\r\n- 내부 이메일 패턴이 준수되지 않는 버그를 수정했습니다. !22516",
"name":"새 이름",
"created_at":"2019-01-03T01:55:18.203Z",
"released_at":"2019-01-03T01:55:18.203Z",
"author":{
"id":1,
"name":"관리자",
"username":"root",
"state":"active",
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon",
"web_url":"https://gitlab.example.com/root"
},
"commit":{
"id":"f8d3d94cbd347e924aa7b715845e439d00e80ca4",
"short_id":"f8d3d94c",
"title":"최초 커밋",
"created_at":"2019-01-03T01:53:28.000Z",
"parent_ids":[
],
"message":"최초 커밋",
"author_name":"관리자",
"author_email":"admin@example.com",
"authored_date":"2019-01-03T01:53:28.000Z",
"committer_name":"관리자",
"committer_email":"admin@example.com",
"committed_date":"2019-01-03T01:53:28.000Z"
},
"commit_path":"/root/awesome-app/commit/588440f66559714280628a4f9799f0c4eb880a4a",
"tag_path":"/root/awesome-app/-/tags/v0.11.1",
"evidence_sha":"760d6cdfb0879c3ffedec13af470e0f71cf52c6cde4d",
"assets":{
"count":4,
"sources":[
{
"format":"zip",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.zip"
},
{
"format":"tar.gz",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.gz"
},
{
"format":"tar.bz2",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar.bz2"
},
{
"format":"tar",
"url":"https://gitlab.example.com/root/awesome-app/-/archive/v0.1/awesome-app-v0.1.tar"
}
],
"links":[
],
"evidence_file_path":"https://gitlab.example.com/root/awesome-app/-/releases/v0.1/evidence.json"
}
}
다가오는 릴리스
released_at
속성이 미래 날짜로 설정된 릴리스는 다가오는 릴리스로 레이블이 지정됩니다 UI에서.
추가로, API에서 릴리스가 요청된 경우, release_at
속성이 미래 날짜로 설정된 각 릴리스에 대해 upcoming_release
라는 추가 속성이 (true로 설정됨) 응답의 일부분으로 반환됩니다.
역사적인 릴리스
- GitLab 15.2에서 도입됨.
released_at
속성이 과거 날짜로 설정된 릴리스는 역사적인 릴리스로 레이블이 지정됩니다 UI에서.
추가로, API에서 릴리스가 요청된 경우, release_at
속성이 과거 날짜로 설정된 각 릴리스에 대해 historical_release
라는 추가 속성이 (true로 설정됨) 응답의 일부분으로 반환됩니다.