GitLab CI/CD 아티팩트 보고서 유형

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

artifacts:reports를 사용하여:

  • 테스트 보고서, 코드 품질 보고서, 보안 보고서 및 포함된 템플릿에서 생성된 기타 아티팩트를 수집합니다.
  • 이러한 보고서 중 일부는 다음에서 정보를 표시하는 데 사용됩니다:

artifacts: reports에 대해 생성된 아티팩트는 작업 결과(성공 또는 실패)와 관계없이 항상 업로드됩니다.

artifacts:expire_in를 사용하여 아티팩트의 만료 시간을 설정할 수 있으며, 이는 인스턴스의 기본 설정을 재정의합니다.

GitLab.com은 다른 기본 아티팩트 만료 값을 가질 수 있습니다.

일부 artifacts:reports 유형은 동일한 파이프라인 내의 여러 작업에서 생성될 수 있으며, 각 작업의 병합 요청 또는 파이프라인 기능에서 사용될 수 있습니다.

보고서 출력 파일을 탐색하려면 작업 정의에 artifacts:paths 키워드를 포함해야 합니다.

note
부모 파이프라인에서 자식 파이프라인의 아티팩트를 사용하는 결합 보고서는 지원되지 않습니다. 지원 추가에 대한 진행 상황은 이 문제에서 확인하세요.

artifacts:reports:accessibility

accessibility 보고서는 pa11y를 사용하여 병합 요청에서 도입된 변경의 접근성 영향을 보고합니다.

GitLab은 병합 요청 접근성 위젯에서 하나 이상의 보고서 결과를 표시할 수 있습니다.

자세한 내용은 접근성 테스트를 참조하세요.

artifacts:reports:annotations

annotations 보고서는 작업에 보조 데이터를 첨부하는 데 사용됩니다.

주석 보고서는 주석 섹션이 포함된 JSON 파일입니다. 각 주석 섹션은 원하는 이름을 가질 수 있으며, 동일한 유형 또는 다른 유형의 주석을 여러 개 가질 수 있습니다.

각 주석은 단일 키(주석 유형)를 가지며, 해당 주석에 대한 데이터가 포함된 하위 키를 포함합니다.

주석 유형

external_link 주석은 작업에 첨부되어 작업 출력 페이지에 대한 링크를 추가할 수 있습니다. external_link 주석의 값은 다음 키를 가진 객체입니다:

Key Description
label 링크와 연관된 사람이 읽을 수 있는 레이블입니다.
url 링크가 가리키는 URL입니다.

예시 보고서

다음은 작업 주석 보고서의 예시입니다:

{
  "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

Tier: Ultimate

api_fuzzing 보고서는 API Fuzzing 버그를 아티팩트로 수집합니다.

GitLab은 다음 위치에서 하나 이상의 보고서 결과를 표시할 수 있습니다:

artifacts:reports:browser_performance

Tier: Premium, Ultimate

browser_performance 보고서는 브라우저 성능 테스트 메트릭을 아티팩트로 수집합니다.
이 아티팩트는 Sitespeed 플러그인에서 출력한 JSON 파일입니다.

GitLab은 병합 요청의 브라우저 성능 테스트 위젯에서 하나의 보고서 결과를 표시할 수 있습니다.

GitLab은 여러 browser_performance 보고서의 결합 결과를 표시할 수 없습니다.

artifacts:reports:coverage_report

coverage_report:를 사용하여 Cobertura 또는 JaCoCo 형식의 coverage report를 수집합니다.

coverage_format:cobertura 또는
jacoco일 수 있습니다.

Cobertura는 원래 Java용으로 개발되었지만, JavaScript, Python 및 Ruby와 같은 다른 언어에 대한 많은 서드파티 포트가 있습니다.

artifacts:  
  reports:  
    coverage_report:  
      coverage_format: cobertura  
      path: coverage/cobertura-coverage.xml  

수집된 커버리지 보고서는 GitLab에 아티팩트로 업로드됩니다.

여러 JaCoCo 또는 Cobertura 보고서를 작업 내에서 생성하고 최종 작업 아티팩트에 와일드카드를 사용하여 포함할 수 있습니다.
보고서의 결과는 최종 커버리지 보고서에 집계됩니다.

GitLab은 병합 요청의 diff 주석에서 커버리지 보고서 결과를 표시할 수 있습니다.

artifacts:reports:codequality

  • 여러 보고서에 대한 주석 및 전체 파이프라인 보고서 지원이 15.7에서 도입되었습니다.

codequality 보고서는 코드 품질 문제를 수집합니다.
수집된 코드 품질 보고서는 GitLab에 아티팩트로 업로드됩니다.

GitLab은 다음 위치에서 하나 이상의 보고서 결과를 표시할 수 있습니다:

artifacts:expire_in 값은 1 week로 설정되어 있습니다.

artifacts:reports:container_scanning

Tier: Ultimate

container_scanning 보고서는 컨테이너 스캐닝 취약점을 수집합니다.
수집된 컨테이너 스캐닝 보고서는 GitLab에 아티팩트로 업로드됩니다.

GitLab은 다음 위치에서 하나 이상의 보고서 결과를 표시할 수 있습니다:

artifacts:reports:coverage_fuzzing

Tier: Ultimate

coverage_fuzzing 보고서는 coverage fuzzing 버그를 수집합니다.
수집된 coverage fuzzing 보고서는 GitLab에 아티팩트로 업로드됩니다.
GitLab은 다음의 하나 이상의 보고서 결과를 표시할 수 있습니다:

artifacts:reports:cyclonedx

Tier: Ultimate

이 보고서는 CycloneDX 프로토콜 형식을 따르는 프로젝트의 구성 요소를 설명하는 소프트웨어 자재 명세서입니다.

작업당 여러 개의 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 아티팩트를 노출하는 작업의 예입니다:

artifacts:
  reports:
    cyclonedx:
      - gl-sbom-npm-npm.cdx.json
      - gl-sbom-bundler-gem.cdx.json

artifacts:reports:dast

Tier: Ultimate

dast 보고서는 DAST 취약점을 수집합니다.
수집된 DAST 보고서는 GitLab에 아티팩트로 업로드됩니다.

GitLab은 다음의 하나 이상의 보고서 결과를 표시할 수 있습니다:

artifacts:reports:dependency_scanning

Tier: Ultimate

dependency_scanning 보고서는 Dependency Scanning 취약점을 수집합니다.
수집된 Dependency Scanning 보고서는 GitLab에 아티팩트로 업로드됩니다.

GitLab은 다음의 하나 이상의 보고서 결과를 표시할 수 있습니다:

artifacts:reports:dotenv

dotenv 보고서는 환경 변수를 아티팩트로 수집합니다.

수집된 변수는 작업의 런타임 생성 변수로 등록되며,

후속 작업 스크립트에서 사용하거나

작업 완료 후 동적 환경 URL을 설정하는 데 사용할 수 있습니다.

dotenv 보고서에 중복된 환경 변수가 존재하는 경우, 마지막으로 지정된 것이 사용됩니다.

자격 증명과 같은 민감한 데이터를 dotenv 보고서에 저장하는 것은 피해야 합니다.

보고서는 파이프라인 세부 정보 페이지에서 다운로드할 수 있습니다. 필요한 경우,

artifacts:access를 사용하여

작업 내에서 보고서 아티팩트를 다운로드할 수 있는 사용자를 제한할 수 있습니다.

원래의 dotenv 규칙에 대한 예외는 다음과 같습니다:

  • 변수 키는 문자, 숫자 및 밑줄(_)만 포함할 수 있습니다.
  • .env 파일의 최대 크기는 5 KB입니다. 이 제한은 자체 관리 인스턴스에서 변경할 수 있습니다.
  • GitLab.com에서 상속된 변수의 최대 수는 무료는 50개, 프리미엄은 100개, 얼티밋은 150개입니다. 자체 관리 인스턴스의 기본값은 150이며, dotenv_variables 응용 프로그램 제한을 변경하여 조정할 수 있습니다.
  • .env 파일에서의 변수 치환은 지원되지 않습니다.
  • .env 파일의 다중 줄 값은 지원되지 않습니다.
  • .env 파일에는 빈 줄이나 주석( # 로 시작)은 포함될 수 없습니다.
  • env 파일의 키 값에는 공백이나 줄 바꿈 문자(\n)를 포함할 수 없습니다. 이는 단일 또는 이중 따옴표를 사용할 때도 마찬가지입니다.
  • 파싱 중 따옴표 이스케이프(key = 'value' -> {key: "value"})는 지원되지 않습니다.
  • UTF-8 인코딩만 지원됩니다.

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은 다음에서 하나 이상의 보고서 결과를 표시할 수 있습니다:

일부 JUnit 도구는 여러 XML 파일로 내보냅니다. 하나의 작업에서 여러 테스트 보고서 경로를 지정하여

이를 단일 파일로 연결할 수 있습니다.

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

  • 파일 이름 패턴(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

Tier: Premium, Ultimate

load_performance 보고서는 로드 성능 테스트 메트릭을 수집합니다.
보고서는 GitLab에 아티팩트로 업로드됩니다.

GitLab은 병합 요청에서 오직 하나의 보고서 결과만 표시할 수 있습니다.
로드 테스트 위젯.

GitLab은 여러 load_performance 보고서의 결합된 결과를 표시할 수 없습니다.

artifacts:reports:metrics

Tier: Premium, Ultimate

metrics 보고서는 메트릭을 수집합니다.
수집된 메트릭 보고서는 GitLab에 아티팩트로 업로드됩니다.

GitLab은 병합 요청에서 하나 이상의 보고서 결과를 표시할 수 있습니다.
메트릭 보고서 위젯.

artifacts:reports:requirements

Tier: Ultimate

requirements 보고서는 requirements.json 파일을 수집합니다.
수집된 요구 사항 보고서는 GitLab에 아티팩트로 업로드되며, 기존의 요구 사항은 충족됨으로 표시됩니다.

GitLab은 프로젝트 요구 사항에서 하나 이상의 보고서 결과를 표시할 수 있습니다.

artifacts:reports:repository_xray

Tier: Ultimate

repository_xray 보고서는 GitLab Duo Code Suggestions에서 사용할 수 있도록 당신의 저장소에 대한 정보를 수집합니다.

artifacts:reports:sast

sast 보고서는 SAST 취약점을 수집합니다.
수집된 SAST 보고서는 GitLab에 아티팩트로 업로드됩니다.

자세한 내용은 다음을 참조하세요:

artifacts:reports:secret_detection

secret-detection 보고서는 감지된 비밀을 수집합니다.
수집된 비밀 탐지 보고서는 GitLab에 업로드됩니다.

GitLab은 다음에서 하나 이상의 보고서 결과를 표시할 수 있습니다:

artifacts:reports:terraform

terraform 보고서는 Terraform tfplan.json 파일을 얻습니다.
자격 증명을 제거하기 위한 JQ 처리 필요.
수집된 Terraform 계획 보고서는 GitLab에 아티팩트로 업로드됩니다.

GitLab은 병합 요청에서 하나 이상의 보고서 결과를 표시할 수 있습니다.
Terraform 위젯.

자세한 내용은 병합 요청에 terraform plan 정보 출력하기를 참조하세요.