CI/CD 아티팩트 보고서 유형
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
artifacts:reports를 사용하여: artifacts: reports를 위해 생성된 아티팩트는 job 결과(성공 또는 실패)에 관계없이 항상 업로드됩니다. 일부 artifacts:reports 유형은 동일한 파이프라인에서 여러 job이 생성하고, 각 job의 머지 리퀘스트 또는 파이프라인 기능에서 사용할 수 있습니다.
artifacts:reports를 사용하여:
- job에 포함된 템플릿에서 생성된 테스트 보고서, 코드 품질 보고서, 보안 보고서 및 기타 아티팩트를 수집합니다.
- 이러한 보고서 중 일부는 다음에 정보를 표시하는 데 사용됩니다:
- 머지 리퀘스트.
- 파이프라인 뷰.
- 보안 대시보드.
artifacts: reports를 위해 생성된 아티팩트는 job 결과(성공 또는 실패)에 관계없이 항상 업로드됩니다.
artifacts:expire_in을 사용하여 아티팩트의 만료 시간을 설정할 수 있으며,
이 설정은 인스턴스의 기본 설정을 재정의합니다.
GitLab.com은 다른 기본 아티팩트 만료 값을 가질 수 있습니다.
일부 artifacts:reports 유형은 동일한 파이프라인에서 여러 job이 생성하고, 각 job의 머지 리퀘스트 또는 파이프라인 기능에서 사용할 수 있습니다.
보고서 출력 파일을 탐색하려면 job 정의에 artifacts:paths 키워드를 포함해야 합니다.
자식 파이프라인의 아티팩트를 사용하는 부모 파이프라인에서의 보고서 결합은 지원되지 않습니다. 이 기능에 대한 지원은 에픽 8205에서 제안되었습니다.
artifacts:reports:accessibility#
accessibility 보고서는 pa11y를 사용하여 머지 리퀘스트에서 도입된 변경 사항의 접근성 영향을 보고합니다.
GitLab은 하나 이상의 보고서 결과를 머지 리퀘스트 접근성 위젯에 표시할 수 있습니다.
자세한 내용은 접근성 테스트를 참조하세요.
artifacts:reports:annotations#
히스토리
- GitLab 16.3에서 도입됨.
annotations 보고서는 job에 보조 데이터를 첨부하는 데 사용됩니다.
어노테이션 보고서는 어노테이션 섹션이 있는 JSON 파일입니다. 각 어노테이션 섹션은 원하는 이름을 가질 수 있으며 동일하거나 다른 유형의 어노테이션을 원하는 수만큼 포함할 수 있습니다.
각 어노테이션은 해당 어노테이션에 대한 데이터가 포함된 하위 키를 포함하는 단일 키(어노테이션 유형)입니다.
어노테이션 유형#
external_link#
external_link 어노테이션을 job에 첨부하여 job 출력 페이지에 링크를 추가할 수 있습니다. external_link 어노테이션의 값은 다음 키를 포함하는 객체입니다:
| 키 | 설명 |
|---|---|
label |
링크와 관련된 사람이 읽을 수 있는 레이블. |
url |
링크가 가리키는 URL. |
예시 보고서#
다음은 job 어노테이션 보고서의 예시입니다:
{
"my_annotation_section_1": [
{
"external_link": {
"label": "URL 1",
"url": "https://url1.example.com/"
}
},
{
"external_link": {
"label": "URL 2",
"url": "https://url2.example.com/"
}
}
]
}
artifacts:reports:api_fuzzing#
api_fuzzing 보고서는 API 퍼징 버그를 아티팩트로 수집합니다.
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 보안 위젯.
- 프로젝트 취약점 보고서.
- 파이프라인 Security 탭.
- 보안 대시보드.
artifacts:reports:browser_performance#
browser_performance 보고서는 브라우저 성능 테스트 메트릭을 아티팩트로 수집합니다. 이 아티팩트는 Sitespeed용 GitLab 플러그인에서 생성된 JSON 파일입니다.
GitLab은 머지 리퀘스트에 결과를 표시합니다. 자세한 내용은 브라우저 성능 테스트를 참조하세요.
GitLab은 여러 browser_performance 보고서의 결합 결과를 표시할 수 없습니다.
artifacts:reports:coverage_report#
coverage_report:를 사용하여 Cobertura 또는 JaCoCo 형식의 커버리지 보고서를 수집합니다.
coverage_format:은 cobertura 또는
jacoco 중 하나일 수 있습니다.
Cobertura는 원래 Java용으로 개발되었지만 JavaScript, Python, Ruby와 같은 다른 언어를 위한 많은 서드파티 포트가 있습니다.
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
수집된 커버리지 보고서는 아티팩트로 GitLab에 업로드됩니다.
여러 JaCoCo 또는 Cobertura 보고서를 생성하고 와일드카드를 사용하여 최종 job 아티팩트에 포함시킬 수 있습니다. 보고서 결과는 최종 커버리지 보고서에 집계됩니다.
커버리지 보고서 결과는 머지 리퀘스트 diff 어노테이션에 나타납니다.
자식 파이프라인의 커버리지 보고서는 머지 리퀘스트 diff 어노테이션에 나타나지만, 아티팩트 자체는 부모 파이프라인과 공유되지 않습니다.
artifacts:reports:codequality#
codequality 보고서는 코드 품질 이슈를 수집합니다. 수집된 코드 품질 보고서는 아티팩트로 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 코드 품질 위젯.
- 머지 리퀘스트 diff 어노테이션.
- 전체 보고서.
artifacts:expire_in 값은 1 week으로 설정됩니다.
artifacts:reports:container_scanning#
container_scanning 보고서는 컨테이너 스캔 취약점을 수집합니다. 수집된 컨테이너 스캔 보고서는 아티팩트로 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 컨테이너 스캔 위젯.
- 파이프라인 Security 탭.
- 보안 대시보드.
- 프로젝트 취약점 보고서.
artifacts:reports:coverage_fuzzing#
coverage_fuzzing 보고서는 커버리지 퍼징 버그를 수집합니다. 수집된 커버리지 퍼징 보고서는 아티팩트로 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 커버리지 퍼징 위젯.
- 파이프라인 Security 탭.
- 프로젝트 취약점 보고서.
- 보안 대시보드.
artifacts:reports:cyclonedx#
이 보고서는 CycloneDX 프로토콜 형식을 따르는 프로젝트 구성요소를 설명하는 소프트웨어 BOM(Bill of Materials)입니다.
job당 여러 CycloneDX 보고서를 지정할 수 있습니다. 파일 이름 목록, 파일 이름 패턴 또는 둘 다로 제공할 수 있습니다:
- 파일 이름 패턴 (
cyclonedx: gl-sbom-*.json,junit: test-results/**/*.json). - 파일 이름 배열 (
cyclonedx: [gl-sbom-npm-npm.cdx.json, gl-sbom-bundler-gem.cdx.json]). - 두 가지 조합 (
cyclonedx: [gl-sbom-*.json, my-cyclonedx.json]). - 디렉토리는 지원되지 않습니다(
cyclonedx: test-results,cyclonedx: test-results/**).
다음 예시는 CycloneDX 아티팩트를 노출하는 job을 보여줍니다:
artifacts:
reports:
cyclonedx:
- gl-sbom-npm-npm.cdx.json
- gl-sbom-bundler-gem.cdx.json
artifacts:reports:dast#
dast 보고서는 DAST 취약점을 수집합니다. 수집된 DAST 보고서는 아티팩트로 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 보안 위젯.
- 파이프라인 Security 탭.
- 프로젝트 취약점 보고서.
- 보안 대시보드.
artifacts:reports:dependency_scanning#
dependency_scanning 보고서는 의존성 스캔 취약점을 수집합니다. 수집된 의존성 스캔 보고서는 아티팩트로 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 의존성 스캔 위젯.
- 파이프라인 Security 탭.
- 보안 대시보드.
- 프로젝트 취약점 보고서.
- 의존성 목록.
artifacts:reports:dotenv#
dotenv 보고서는 파일에서 환경 변수를 수집하여 파이프라인의 이후 job에 CI/CD 변수로 사용할 수 있게 합니다.
수집된 변수는 이후 job 스크립트에서 사용하거나 동적 환경 URL을 설정할 수 있는 job 변수로 등록됩니다.
동일한 변수 이름이 dotenv 보고서에 여러 번 나타나면 마지막 값이 사용됩니다.
파이프라인 사용자가 접근할 수 있으므로 자격 증명, API 키 또는 토큰과 같은 민감한 데이터는 포함하지 마세요.
접근을 제한하려면 artifacts:access를 사용하세요.
GitLab은 dotenv gem을 사용하여 dotenv 파일을 처리하지만,
원래 dotenv 규칙과
gem 구현 모두에 추가 제한을 적용합니다.
파일 크기 및 변수 제한:
- 최대
dotenv파일 크기는 5 KB입니다. 이 제한은 GitLab Self-Managed에서 변경 가능합니다. - GitLab.com의 경우 최대 상속 변수는 Free에서 50개, Premium에서 100개, Ultimate에서 150개입니다.
GitLab Self-Managed의 기본값은 20개이며
dotenv_variables애플리케이션 제한으로 변경할 수 있습니다.
형식 제한:
- UTF-8 인코딩만 지원됩니다.
dotenv파일은 빈 줄이나 (#으로 시작하는) 주석을 포함할 수 없습니다.- 변수 이름에는 ASCII 문자(
A-Za-z), 숫자(0-9) 및 밑줄(_)만 포함할 수 있습니다. dotenv파일은 따옴표 처리를 지원하지 않습니다. 작은따옴표나 큰따옴표는 있는 그대로 보존되며 이스케이프에 사용할 수 없습니다.- 값에는 이스케이프가 필요한 줄바꿈이나 특수 문자를 포함할 수 없습니다.
- 여러 줄 값은 지원되지 않습니다. GitLab은 업로드 시
dotenv파일을 거부합니다. - 선행 및 후행 공백이나 줄바꿈 문자(
\n)는 제거됩니다. - 복잡한 값(JSON, 여러 줄 텍스트)의 경우 다른 아티팩트 보고서 유형을 사용하거나 별도의 파일 아티팩트에 데이터를 저장하세요.
artifacts:reports:junit#
junit 보고서는 JUnit 보고서 형식 XML 파일을 수집합니다. 수집된 단위 테스트 보고서는 아티팩트로 GitLab에 업로드됩니다. JUnit은 원래 Java용으로 개발되었지만 JavaScript, Python, Ruby와 같은 다른 언어를 위한 많은 서드파티 포트가 있습니다.
자세한 내용과 예시는 단위 테스트 보고서를 참조하세요. 다음 예시는 Ruby RSpec 테스트에서 JUnit XML 보고서를 수집하는 방법을 보여줍니다:
rspec:
stage: test
script:
- bundle install
- rspec --format RspecJunitFormatter --out rspec.xml
artifacts:
reports:
junit: rspec.xml
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 Test summary 패널.
- 파이프라인 Tests 탭.
일부 JUnit 도구는 여러 XML 파일로 내보냅니다. 단일 job에서 여러 테스트 보고서 경로를 지정하여 단일 파일로 연결할 수 있습니다. 다음 중 하나를 사용하세요:
- 파일 이름 패턴 (
junit: rspec-*.xml,junit: test-results/**/*.xml). - 파일 이름 배열 (
junit: [rspec-1.xml, rspec-2.xml, rspec-3.xml]). - 두 가지 조합 (
junit: [rspec.xml, test-results/TEST-*.xml]). - 디렉토리는 지원되지 않습니다(
junit: test-results,junit: test-results/**).
artifacts:reports:load_performance#
load_performance 보고서는 부하 성능 테스트 메트릭을 수집합니다. 보고서는 아티팩트로 GitLab에 업로드됩니다.
결과는 머지 리퀘스트 부하 테스트 위젯에 표시됩니다. 여러 load_performance 보고서의 결합 결과는 지원되지 않습니다.
artifacts:reports:metrics#
metrics 보고서는 메트릭을 수집합니다. 수집된 메트릭 보고서는 아티팩트로 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 머지 리퀘스트 메트릭 보고서 위젯에 표시할 수 있습니다.
artifacts:reports:requirements#
requirements 보고서는 requirements.json 파일을 수집합니다. 수집된 요구 사항 보고서는 아티팩트로 GitLab에 업로드되고 기존 요구 사항은 충족된 것으로 표시됩니다.
GitLab은 하나 이상의 보고서 결과를 프로젝트 요구 사항에 표시할 수 있습니다.
artifacts:reports:sast#
sast 보고서는 SAST 취약점을 수집합니다. 수집된 SAST 보고서는 아티팩트로 GitLab에 업로드됩니다.
자세한 내용은 다음을 참조하세요:
artifacts:reports:secret_detection#
secret-detection 보고서는 감지된 시크릿을 수집합니다. 수집된 시크릿 감지 보고서는 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 다음에 표시할 수 있습니다:
- 머지 리퀘스트 시크릿 스캐닝 위젯.
- 파이프라인 보안 탭.
- 보안 대시보드.
artifacts:reports:terraform#
terraform 보고서는 OpenTofu tfplan.json 파일을 가져옵니다. 자격 증명을 제거하기 위해 JQ 처리가 필요합니다. 수집된 OpenTofu 플랜 보고서는 아티팩트로 GitLab에 업로드됩니다.
GitLab은 하나 이상의 보고서 결과를 머지 리퀘스트 OpenTofu 위젯에 표시할 수 있습니다.
자세한 내용은 머지 리퀘스트에 tofu plan 정보 출력을 참조하세요.
