Job Artifacts API

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

작업 아티팩트 API를 사용하여 작업 아티팩트를 다운로드하거나 삭제합니다.

CI/CD job token으로 인증할 수 있으며, 이는 프리미엄 및 얼티메이트 티어에서 사용할 수 있습니다.

작업 아티팩트 가져오기

프로젝트의 작업 아티팩트를 압축 된 아카이브로 가져옵니다.

GitLab.com으로부터 아티팩트를 다운로드 하는 경우 cURL을 사용하면 --location 매개 변수를 사용하십시오. 요청이 CDN을 통해 리디렉션 될 수 있습니다.

GET /projects/:id/jobs/:job_id/artifacts

| 속성 | 유형 | 필요 | 설명 | |————–|—————–|———|————| | id | 정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. | | job_id | 정수 | 예 | 작업 ID. | | job_token | 문자열 | 아니오 | 트리거와 함께 사용하도록 설정되었습니다. .gitlab-ci.yml 파일에 정의된 CI/CD 작업에서만 호출해야합니다. 값은 항상 $CI_JOB_TOKEN입니다. $CI_JOB_TOKEN에 연결된 작업은이 토큰을 사용할 때 실행되어야합니다. 프리미엄 및 얼티메이트 전용입니다.

PRIVATE-TOKEN 헤더를 사용한 예제 요청:

curl --location --output artifacts.zip --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"

프리미엄 및 얼티메이트 티어에서는 이 엔드포인트에 대한 CI/CD 작업에서 CI/CD job token으로 인증 할 수 있습니다.

다음 중 하나를 사용하십시오:

  • GitLab에서 제공하는 CI_JOB_TOKEN 사전 정의 변수를 사용하는 job_token 속성. 예를 들어, 다음 작업은 ID 42의 작업의 아티팩트를 다운로드 합니다.

    artifact_download:
      stage: test
      script:
        - 'curl --location --output artifacts.zip "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts?job_token=$CI_JOB_TOKEN"'
    
  • GitLab에서 제공하는 CI_JOB_TOKEN 사전 정의 변수를 사용하는 JOB-TOKEN 헤더. 예를 들어, 다음 작업은 ID 42의 작업의 아티팩트를 다운로드합니다. 이 명령은 콜론 ( : )을 포함하기 때문에 작은 따옴표에 감싸져 있습니다.

    artifact_download:
      stage: test
      script:
        - 'curl --location --output artifacts.zip --header "JOB-TOKEN: $CI_JOB_TOKEN" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"'
    

가능한 응답 상태 코드:

상태 설명
200 아티팩트 파일 제공.
404 빌드를 찾을 수 없거나 아티팩트가 없음.

아티팩트 아카이브 다운로드

주어진 참조 이름 및 작업으로부터 최신 성공한 파이프라인의 아티팩트를 다운로드합니다. 작업이 성공적으로 완료되었을 때만 가능합니다. 이는 작업 아티팩트 가져오기와 동일하지만, 작업 ID가 아닌 작업 이름을 정의함으로써 이루어집니다.

GitLab.com으로부터 아티팩트를 다운로드 하는 경우 cURL을 사용하면 --location 매개 변수를 사용하십시오. 요청이 CDN를 통해 리디렉션 될 수 있습니다.

참고: 파이프라인이 자식 파이프라인의 부모인 경우, 아티팩트는 계층적 순서로 부모에서 자식까지의 순서로 검색됩니다. 예를 들어, 부모 및 자식 파이프라인 모두 동일한 이름의 작업이있는 경우, 부모 파이프라인에서 아티팩트가 반환됩니다.

GET /projects/:id/jobs/artifacts/:ref_name/download?job=name

매개 변수

| 속성 | 유형 | 필요 | 설명 | |————–|—————–|———|————| | id | 정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. | | job | 문자열 | 예 | 작업의 이름. | | ref_name | 문자열 | 예 | 리포지토리의 브랜치 또는 태그 이름. HEAD 또는 SHA 참조는 지원되지 않습니다. | | job_token | 문자열 | 아니오 | 트리거와 함께 사용하도록 설치되었습니다. .gitlab-ci.yml 파일에 정의된 CI/CD 작업에서만 호출해야합니다. 값은 항상 $CI_JOB_TOKEN입니다. $CI_JOB_TOKEN에 연결된 작업은이 토큰을 사용할 때 실행되어야합니다. 프리미엄 및 얼티메이트 전용입니다.

PRIVATE-TOKEN 헤더를 사용한 예제 요청:

curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/download?job=test"

프리미엄 및 얼티메이트 티어에서는 이 엔드포인트에 대한 CI/CD 작업에서 CI/CD job token으로 인증 할 수 있습니다.

다음 중 하나를 사용하십시오:

  • GitLab에서 제공하는 CI_JOB_TOKEN 사전 정의 변수를 사용하는 job_token 속성. 예를 들어, 다음 작업은 main 브랜치의 test 작업의 아티팩트를 다운로드합니다.

    artifact_download:
      stage: test
      script:
        - 'curl --location --output artifacts.zip "https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/main/download?job=test&job_token=$CI_JOB_TOKEN"'
    
  • GitLab에서 제공하는 CI_JOB_TOKEN 사전 정의 변수를 사용하는 JOB-TOKEN 헤더. 예를 들어, 다음 작업은 main 브랜치의 test 작업의 아티팩트를 다운로드합니다. 이 명령은 콜론 ( : )을 포함하기 때문에 작은 따옴표에 감싸져 있습니다.

    artifact_download:
      stage: test
      script:
        - 'curl --location --output artifacts.zip --header "JOB-TOKEN: $CI_JOB_TOKEN" "https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts/main/download?job=test"'
    

가능한 응답 상태 코드:

상태 설명
200 아티팩트 파일 제공.
404 빌드를 찾을 수 없거나 아티팩트가 없음.

작업 ID별로 단일 아티팩트 파일 다운로드

특정 ID를 가진 작업에서 작업 아티팩트의 압축 아카이브 내부에서 단일 아티팩트 파일을 다운로드합니다. 파일은 아카이브에서 추출되어 클라이언트로 스트리밍됩니다.

GitLab.com에서 cURL을 사용하여 아티팩트를 다운로드하는 경우, 요청이 CDN을 통해 리디렉션될 수 있으므로 --location 매개변수를 사용하십시오.

GET /projects/:id/jobs/:job_id/artifacts/*artifact_path

매개변수

속성 타입 필수 설명
artifact_path string Yes 아티팩트 아카이브 내부의 파일 경로.
id integer/string Yes 프로젝트의 ID 또는 URL 인코딩된 경로.
job_id integer Yes 고유한 작업 식별자.
job_token string No 멀티 프로젝트 파이프라인의 트리거와 함께 사용하도록 설정됩니다. 이는 .gitlab-ci.yml 파일에서 정의된 CI/CD 작업에서만 호출되어야 합니다. 값은 항상 $CI_JOB_TOKEN입니다. $CI_JOB_TOKEN과 연결된 작업은 해당 토큰을 사용할 때 실행 중이어야 합니다. 프리미엄 및 얼티밋 전용.

예시 요청:

curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/5/artifacts/some/release/file.pdf"

프리미엄 및 얼티밋 티어에서는 CI/CD 작업 토큰을 사용하여 이 엔드포인트에서 인증할 수 있습니다.

가능한 응답 상태 코드:

상태 설명
200 단일 아티팩트 파일 전송
400 제공된 경로가 유효하지 않음
404 빌드를 찾을 수 없거나 파일/아티팩트가 없음

특정 태그 또는 브랜치에서 단일 아티팩트 파일 다운로드

특정 참조 이름의 최신 성공한 파이프라인의 특정 작업에 대한 단일 아티팩트 파일을 다운로드합니다. 파일은 아카이브에서 추출되어 클라이언트로 스트리밍되며, plain/text 콘텐츠 유형을 가집니다.

아티팩트 파일은 CSV 내보내기에서 이용 가능한 것보다 더 많은 세부 정보를 제공합니다.

상위 및 하위 파이프라인의 아티팩트는 상위에서 하위로의 계층적 순서로 검색됩니다. 예를 들어, 상위 및 하위 파이프라인 모두 동일한 이름의 작업을 가지고 있다면, 상위 파이프라인의 아티팩트가 반환됩니다.

GitLab.com에서 cURL을 사용하여 아티팩트를 다운로드하는 경우, 요청이 CDN을 통해 리디렉션될 수 있으므로 --location 매개변수를 사용하십시오.

GET /projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name

매개변수:

속성 타입 필수 설명
artifact_path string Yes 아티팩트 아카이브 내부의 파일 경로.
id integer/string Yes 프로젝트의 ID 또는 URL 인코딩된 경로.
job string Yes 작업의 이름.
ref_name string Yes 저장소의 브랜치 또는 태그 이름. HEAD 또는 SHA 레퍼런스는 지원되지 않습니다.
job_token string No 멀티 프로젝트 파이프라인의 트리거와 함께 사용하도록 설정됩니다. 이는 .gitlab-ci.yml 파일에서 정의된 CI/CD 작업에서만 호출되어야 합니다. 값은 항상 $CI_JOB_TOKEN입니다. $CI_JOB_TOKEN과 연결된 작업은 해당 토큰을 사용할 때 실행 중이어야 합니다. 프리미엄 및 얼티밋 전용.

예시 요청:

curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/main/raw/some/release/file.pdf?job=pdf"

프리미엄 및 얼티밋 티어에서는 CI/CD 작업 토큰을 사용하여 이 엔드포인트에서 인증할 수 있습니다.

가능한 응답 상태 코드:

상태 설명
200 단일 아티팩트 파일 전송
400 제공된 경로가 유효하지 않음
404 빌드를 찾을 수 없거나 파일/아티팩트가 없음

아티팩트 보관

만료가 설정된 상태에서 아티팩트가 삭제되는 것을 방지합니다.

POST /projects/:id/jobs/:job_id/artifacts/keep

매개변수

속성 타입 필수 설명
id integer/string Yes 인증된 사용자가 소유한 프로젝트의 ID 또는 URL 인코딩된 경로.
job_id integer Yes 작업의 ID.

예시 요청:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts/keep"

예시 응답:

{
  "commit": {
    "author_email": "admin@example.com",
    "author_name": "Administrator",
    "created_at": "2015-12-24T16:51:14.000+01:00",
    "id": "0ff3ae198f8601a285adcf5c0fff204ee6fba5fd",
    "message": "Test the CI integration.",
    "short_id": "0ff3ae19",
    "title": "Test the CI integration."
  },
  "coverage": null,
  "allow_failure": false,
  "download_url": null,
  "id": 42,
  "name": "rubocop",
  "ref": "main",
  "artifacts": [],
  "runner": null,
  "stage": "test",
  "created_at": "2016-01-11T10:13:33.506Z",
  "started_at": "2016-01-11T10:13:33.506Z",
  "finished_at": "2016-01-11T10:15:10.506Z",
  "duration": 97.0,
  "status": "failed",
  "failure_reason": "script_failure",
  "tag": false,
  "web_url": "https://example.com/foo/bar/-/jobs/42",
  "user": null
}

작업 아티팩트 삭제

작업의 아티팩트를 삭제합니다.

필수 설치 요소: - 프로젝트에서 적어도 유지자 역할을 가지고 있어야 합니다.

DELETE /projects/:id/jobs/:job_id/artifacts
속성 유형 필수 여부 설명
id 정수/문자열 프로젝트의 ID 또는 URL-인코딩 된 경로.
job_id 정수 작업의 ID.

예시 요청:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/1/artifacts"

참고: 아티팩트를 삭제하려면 적어도 유지자 역할이 필요합니다.

아티팩트가 성공적으로 삭제된 경우, 204 No Content 상태를 포함한 응답이 반환됩니다.

프로젝트 아티팩트 삭제

  • GitLab 14.7에서 도입되었습니다. bulk_expire_project_artifacts라는 플래그가 함께 설정되어 있습니다. GitLab Self-Managed에서 기본으로 활성화되어 있습니다. GitLab.com에서도 활성화되어 있습니다.
  • GitLab 14.10에서 기능 플래그가 제거되었습니다.

프로젝트에서 삭제할 수 있는 아티팩트를 삭제합니다. 기본적으로, 각 참조의 가장 최근에 성공한 파이프라인.의 아티팩트는 삭제되지 않습니다.

이 엔드포인트에 대한 요청은 삭제할 수 있는 모든 아티팩트의 만료를 현재 시간으로 설정합니다. 그런 다음 파일은 만료된 작업 아티팩트의 정기 정리의 일부로 시스템에서 삭제됩니다. 작업 로그는 절대 삭제되지 않습니다.

정기적인 정리는 스케줄에 따라 비동기적으로 진행되므로 아티팩트가 삭제되기 전에 약간의 지연이 있을 수 있습니다.

필수 설치 요소: - 프로젝트에서 적어도 유지자 역할을 가지고 있어야 합니다.

DELETE /projects/:id/artifacts
속성 유형 필수 여부 설명
id 정수/문자열 프로젝트의 ID 또는 URL-인코딩 된 경로.

예시 요청:

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

202 Accepted 상태를 포함한 응답이 반환됩니다.