- 작업 아티팩트 가져오기
- 아티팩트 아카이브 다운로드
- 작업 ID로 단일 아티팩트 파일 다운로드
- 특정 태그 또는 브랜치의 단일 아티팩트 파일 다운로드
- 아티팩트 유지
- 작업 아티팩트 삭제
- 프로젝트 아티팩트 삭제
직업 아티팩트 API
작업 아티팩트 API를 사용하여 작업 아티팩트를 다운로드하거나 삭제할 수 있습니다.
프리미엄 및 얼티밋 티어에서 사용할 수 있는 CI/CD 작업 토큰으로 인증합니다.
작업 아티팩트 가져오기
- 아티팩트 다운로드 API에서
CI_JOB_TOKEN
의 사용은 도입되었습니다 GitLab Premium 9.5에서.
프로젝트의 작업 아티팩트를 압축된 아카이브로 가져옵니다.
GitLab.com에서 아티팩트를 다운로드하려면 cURL을 사용하는 경우, 요청이 CDN을 통해 리디렉션될 수 있으므로 --location
매개변수를 사용하세요.
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 --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"
프리미엄 및 얼티밋 티어에서는 이 엔드포인트에서 CI/CD 작업으로 CI/CD 작업 토큰으로 인증할 수 있습니다.
다음 중 하나를 사용할 수 있습니다:
-
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 | 빌드를 찾을 수 없거나 아티팩트가 없습니다. |
아티팩트 아카이브 다운로드
- 아티팩트 다운로드 API에서
CI_JOB_TOKEN
의 사용은 소개됨 GitLab Premium 9.5에서.
지정된 참조 이름과 작업에 대해 최신 성공적인 파이프라인에서 아티팩트 압축 아카이브를 다운로드합니다. 이는 작업의 ID 대신 작업의 이름을 정의하여 작업의 아티팩트 가져오기와 동일합니다.
가장 최신 성공적인 파이프라인을 결정하기 위해 GitLab은 성공적인 파이프라인의 생성 시간을 확인합니다. 개별 작업의 시작 또는 종료 시간은 최신 파이프라인을 결정하는 데 영향을 미치지 않습니다.
GitLab.com에서 아티팩트를 다운로드하려면 cURL을 사용하고, 요청이 CDN을 통해 리디렉션될 수 있으므로 --location
매개변수를 사용합니다.
노트:
파이프라인이 다른 하위 파이프라인의 부모인 경우, 아티팩트는 부모에서 자식으로 계층적으로 검색됩니다. 예를 들어, 부모와 자식 파이프라인 모두 동일한 이름의 작업이 있을 경우 부모 파이프라인에서 아티팩트가 반환됩니다.
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 작업 토큰을 사용하여 이 엔드포인트에 인증할 수 있습니다.
다음 두 가지 방법 중 하나를 사용하십시오:
-
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 |
문자열 | 예 | 아티팩트 아카이브 내의 파일 경로. |
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩 경로. |
job_id |
정수 | 예 | 고유한 작업 식별자. |
job_token |
문자열 | 아니오 | 다중 프로젝트 파이프라인을 위한 트리거와 함께 사용됩니다. .gitlab-ci.yml 파일에 정의된 CI/CD 작업 내에서만 호출해야 합니다. 값은 항상 $CI_JOB_TOKEN 입니다. 이 토큰을 사용할 때 $CI_JOB_TOKEN 과 연결된 작업이 실행 중이어야 합니다. Premium 및 Ultimate 전용. |
예제 요청:
curl --location --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/5/artifacts/some/release/file.pdf"
Premium 및 Ultimate 티어에서는 CI/CD 작업에서 이 엔드포인트에 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 |
문자열 | 예 | 아티팩트 아카이브 내의 파일 경로. |
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩 경로. |
job |
문자열 | 예 | 작업의 이름. |
ref_name |
문자열 | 예 | 저장소의 브랜치 또는 태그 이름. HEAD 또는 SHA 참조는 지원되지 않습니다. |
job_token |
문자열 | 아니오 | 다중 프로젝트 파이프라인을 위한 트리거와 함께 사용됩니다. .gitlab-ci.yml 파일에 정의된 CI/CD 작업 내에서만 호출해야 합니다. 값은 항상 $CI_JOB_TOKEN 입니다. 이 토큰을 사용할 때 $CI_JOB_TOKEN 과 연결된 작업이 실행 중이어야 합니다. Premium 및 Ultimate 전용. |
예제 요청:
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"
Premium 및 Ultimate 티어에서는 CI/CD 작업에서 이 엔드포인트에 CI/CD 작업 토큰을 사용하여 인증할 수 있습니다.
가능한 응답 상태 코드:
상태 | 설명 |
---|---|
200 | 단일 아티팩트 파일을 보냅니다. |
400 | 잘못된 경로가 제공되었습니다. |
404 | 빌드를 찾을 수 없거나 파일/아티팩트가 없습니다. |
아티팩트 유지
만료가 설정되었을 때 아티팩트가 삭제되지 않도록 방지합니다.
POST /projects/:id/jobs/:job_id/artifacts/keep
매개변수
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id |
정수/문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
job_id |
정수 | 예 | 작업의 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
}
작업 아티팩트 삭제
작업의 아티팩트를 삭제합니다.
전제 조건:
- 프로젝트에 대해 최소한 Maintainer 역할이 있어야 합니다.
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"
참고:
아티팩트를 삭제하려면 최소한 Maintainer 역할이 필요합니다.
아티팩트가 성공적으로 삭제되면 204 No Content
상태의 응답이 반환됩니다.
프로젝트 아티팩트 삭제
삭제 가능 대상인 프로젝트의 아티팩트를 삭제합니다. 기본적으로 각 참조의 가장 최근 성공적인 파이프라인의 아티팩트는 삭제되지 않습니다.
이 엔드포인트에 대한 요청은 삭제할 수 있는 모든 아티팩트의 만료 시간을 현재 시간으로 설정합니다. 그런 다음 파일은 만료된 작업 아티팩트의 정기적인 정리의 일환으로 시스템에서 삭제됩니다. 작업 로그는 절대 삭제되지 않습니다.
정기적인 정리는 일정에 따라 비동기적으로 발생하므로 아티팩트가 삭제되기까지 짧은 지연이 있을 수 있습니다.
전제 조건:
- 프로젝트에 대해 최소한 Maintainer 역할이 있어야 합니다.
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
상태의 응답이 반환됩니다.