릴리스 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

이 API를 사용하여 릴리스 항목을 조작합니다.

릴리스 자산으로 연결하려면 릴리스 링크 API를 참조하세요.

인증

인증을 위해 릴리스 API는 다음 중 하나를 허용합니다:

릴리스 목록

릴리스를 released_at으로 정렬한 페이지별 릴리스 목록을 반환합니다.

GET /projects/:id/releases
속성 유형 필수 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
order_by 문자열 아니요 순서로 사용할 필드. released_at (기본값) 또는 created_at 중 하나.
sort 문자열 아니요 순서의 방향. 오름차순을 위해 asc, 내림차순을 위해 desc 중 하나.
include_html_description 부울값 아니요 true인 경우 응답에 릴리스 설명의 HTML 렌더링된 마크다운이 포함됩니다.

성공하면 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"

예시 응답:

[
   {
      "tag_name":"v0.2",
      "description":"## 변경 로그\r\n\r\n- GLFM 자동완성에서 XSS 방지를 위해 라벨 및 마일스톤 제목 이스케이프. !2740\r\n- 비공개 스니펫을 임베드할 수 없도록 설정.\r\n- 멤버 삭제 서비스에 하위 리소스 제거 추가.",
      "name":"멋진 앱 v0.2 베타",
      "created_at":"2019-01-03T01:56:19.539Z",
      "released_at":"2019-01-03T01:56:19.539Z",
      "author":{
         "id":1,
         "name":"관리자",
         "username":"root",
         "state":"활성",
         "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":"README.md 업데이트",
         "created_at":"2019-01-03T01:55:38.000Z",
         "parent_ids":[
            "f8d3d94cbd347e924aa7b715845e439d00e80ca4"
         ],
         "message":"README.md 업데이트",
         "author_name":"관리자",
         "author_email":"admin@example.com",
         "authored_date":"2019-01-03T01:55:38.000Z",
         "committer_name":"관리자",
         "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":"닫힘",
            "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":"닫힘",
            "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":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":"## 변경 로그\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":"활성",
         "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"
      },
      "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"
      }
   }
]

## 태그 이름으로 릴리스 가져오기

> - [변경됨](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72448) GitLab 14.5에서 `JOB-TOKEN`을 허용하도록 변경되었습니다.

주어진 태그에 대한 릴리스를 가져옵니다.

```plaintext
GET /projects/:id/releases/:tag_name
속성 유형 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL-인코딩된 경로
tag_name string yes 릴리스가 연관된 Git 태그
include_html_description boolean no true 인 경우, 응답에 릴리스 설명의 HTML 렌더링이 포함됨

성공하면, 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/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":"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":"첫 번째 커밋",
      "created_at":"2019-01-03T01:53:28.000Z",
      "parent_ids":[

      ],
      "message":"첫 번째 커밋",
      "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"
   },
   "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"
    }
  ]
}

릴리스 에셋 다운로드

다음 형식으로 요청을 보내어 릴리스 에셋 파일을 다운로드하세요.

GET /projects/:id/releases/:tag_name/downloads/:direct_asset_path
속성 유형 필수여부 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
tag_name 문자열 릴리스와 연관된 Git 태그.
filepath 문자열 사용되지 않음: 대신 direct_asset_path를 사용하세요.
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"

최신 릴리스 가져오기

최신 릴리스 정보는 영구적인 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 문자열 아니요 릴리스의 설명. 마크다운을 사용할 수 있습니다.
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:filepath 문자열 아니요 사용되지 않음: 대신 direct_asset_path를 사용하세요.
assets:links:direct_asset_path 문자열 아니요 릴리스 에셋에 대한 영구 링크의 선택적 경로.
assets:links:link_type 문자열 아니요 링크 유형: other, runbook, image, package. 기본값은 other입니다.
released_at 날짜 및 시간 아니요 릴리스의 날짜와 시간. 기본값은 현재 시간입니다. ISO 8601 형식으로 예상되며 (다가오는 또는 역사적 릴리스를 만드는 경우에만 이 필드를 제공하세요.

요청 예시:

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/588440f66559714280628a4f9799f0c4eb880a4a",
   "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"
   }
}

그룹 마일스톤

Tier: Premium, Ultimate Offering: Self-managed, GitLab Dedicated

프로젝트와 연관된 그룹 마일스톤은 milestones 배열에서 릴리스 생성릴리스 업데이트 API 호출에 지정할 수 있습니다. 프로젝트 그룹과 연관된 마일스톤만 지정할 수 있으며, 상위 그룹에 마일스톤을 추가하면 오류가 발생합니다.

릴리스 증거 수집

Tier: Premium, Ultimate Offering: Self-managed, GitLab Dedicated

기존 릴리스에 대한 증거를 생성합니다.

POST /projects/:id/releases/:tag_name/evidence
속성 유형 필수 설명
id integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로.
tag_name string yes 릴리스가 연관된 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 integer/string yes 프로젝트의 ID 또는 URL 인코딩된 경로.
tag_name string yes 릴리스가 연관된 Git 태그.
name string no 릴리스 이름.
description string no 릴리스 설명. Markdown을 사용할 수 있습니다.
milestones 문자열 배열 no 릴리스와 관련된 각 마일스톤의 제목. GitLab Premium 고객은 그룹 마일스톤을 지정할 수 있습니다. 릴리스에서 모든 마일스톤을 제거하려면 []을 지정하세요.
released_at 날짜/시간 no 릴리스가 준비된/준비된 날짜. 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- 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":"new name",
   "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"
   },
   "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"
   }
}

릴리스 삭제

  • 변경됨 GitLab 14.5에서 JOB-TOKEN을 허용하도록 변경되었습니다.

릴리스를 삭제합니다. 릴리스를 삭제해도 관련 태그는 삭제되지 않습니다. 릴리스를 삭제하려면 프로젝트의 관리자 수준 액세스 권한이 필요합니다.

DELETE /projects/:id/releases/:tag_name
속성 유형 필수 여부 설명
id 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
tag_name 문자열 릴리스가 연관된 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":"## 변경 로그\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":"활성",
      "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)이 응답의 일부로 반환됩니다.

과거 릴리스

과거 날짜로 설정된 released_at 속성을 가진 릴리스는 UI에서 과거 릴리스로 레이블이 지정됩니다(링크).

또한, API에서 릴리스를 요청하는 경우, 과거 날짜로 설정된 release_at 속성을 가진 각 릴리스에 대해 추가 속성 historical_release (true로 설정)이 응답의 일부로 반환됩니다.