작업 아티팩트 문제 해결

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

작업 아티팩트와 작업할 때 다음과 같은 문제에 직면할 수 있습니다.

작업이 특정 아티팩트를 검색하지 않음

기본적으로 작업은 이전 단계에서 모든 아티팩트를 가져오지만, dependencies 또는 needs를 사용하는 작업은 기본적으로 모든 작업에서 아티팩트를 가져오지 않습니다.

이러한 키워드를 사용하는 경우 아티팩트는 일부 작업에서만 가져옵니다. 이러한 키워드로 아티팩트를 가져오는 방법에 대한 정보는 키워드 참조를 검토하세요:

작업 아티팩트가 너무 많은 디스크 공간을 사용함

작업 아티팩트가 너무 많은 디스크 공간을 사용하는 경우,
작업 아티팩트 관리 문서를 참조하세요.

오류 메시지 업로드할 파일 없음

이 메시지는 러너가 업로드할 파일을 찾을 수 없을 때 작업 로그에 나타납니다. 파일 경로가 잘못되었거나 파일이 생성되지 않았을 수 있습니다. 파일 이름 및 생성되지 않은 이유를 명확히 하는 다른 오류 또는 경고를 확인하려면 작업 로그를 확인할 수 있습니다.

더 상세한 작업 로그를 보려면 CI/CD 디버그 로깅을 활성화하고 다시 작업을 시도하세요. 이 로깅은 파일이 생성되지 않은 이유에 대한 더 많은 정보를 제공할 수 있습니다.

오류 메시지 Missing /usr/bin/gitlab-runner-helper. Uploading artifacts is disabled.

GitLab 15.1 및 이전 버전에서는 DEBUG라는 CI/CD 변수를 설정하면 아티팩트 업로드가 실패할 수 있습니다.

이 문제를 해결하려면 다음을 수행할 수 있습니다:

  • GitLab 및 GitLab Runner 15.2로 업데이트
  • 다른 변수 이름 사용
  • script 명령에서 환경 변수로 설정:

    failing_test_job:  # 이 작업은 gitlab-org/gitlab-runner#3068로 인해 실패할 수 있음
      variables:
        DEBUG: true
      script: bin/mycommand
      artifacts:
        paths:
          - bin/results
    
    successful_test_job:  # 이 작업은 `DEBUG`라는 CI/CD 변수를 정의하지 않으며, 문제의 영향을 받지 않음
      script: DEBUG=true bin/mycommand
      artifacts:
        paths:
          - bin/results
    

Windows 러너에서 dotenv 아티팩트를 업로드할 때 FATAL: invalid argument 오류 메시지

PowerShell echo 명령은 UCS-2 LE BOM(바이트 순서 표시) 인코딩으로 파일을 작성하지만, UTF-8만 지원됩니다. echodotenv 아티팩트를 생성하려고 하면 FATAL: invalid argument 오류가 발생합니다.

대신 PowerShell Add-Content를 사용하세요. 이는 UTF-8을 사용합니다:

test-job:
  stage: test
  tags:
    - windows
  script:
    - echo "test job"
    - Add-Content -Path build.env -Value "MY_ENV_VAR=true"
  artifacts:
    reports:
      dotenv: build.env

작업 아티팩트가 만료되지 않음

일부 작업 아티팩트가 예상대로 만료되지 않는 경우, 가장 최근 성공적인 작업에서 아티팩트 유지 설정이 활성화되어 있는지 확인하세요.

이 설정이 활성화되면 각 참조의 최신 성공적인 파이프라인에서 작업 아티팩트가 만료되지 않고 삭제되지 않습니다.

오류 메시지 이 작업을 시작할 수 없습니다. 필요한 아티팩트를 검색할 수 없습니다.

작업이 시작되지 않고 이 오류 메시지가 반환되면, 예상하는 아티팩트를 가져올 수 없음을 의미합니다. 이 오류는 다음과 같은 경우에 발생합니다:

  • 작업의 의존성을 찾을 수 없습니다. 기본적으로, 이후 단계의 작업은 모든 이전 단계의 작업에서 아티팩트를 가져오므로, 이전 작업이 모두 의존하는 것으로 간주됩니다. 작업이 dependencies 키워드를 사용하는 경우, 나열된 작업만 의존합니다.
  • 아티팩트가 이미 만료되었습니다. artifacts:expire_in으로 더 긴 만료 시간을 설정할 수 있습니다.
  • 작업이 적절한 리소스에 접근할 수 없습니다. 권한이 부족한 경우입니다.

작업이 needs:artifacts 키워드를 사용할 경우 추가 문제 해결 단계를 참조하세요:

needs:project로 구성된 작업의 경우

필요한 아티팩트를 검색할 수 없습니다. 오류는 다음과 같은 구성으로 needs:project를 사용하는 작업에서 발생할 수 있습니다:

rspec:
  needs:
    - project: my-group/my-project
      job: dependency-job
      ref: master
      artifacts: true

이 오류를 문제 해결하려면 다음 사항을 확인하세요:

  • 프로젝트 my-group/my-project가 Premium 구독 플랜의 그룹에 있는지 확인합니다.
  • 작업을 실행하는 사용자가 my-group/my-project의 리소스에 접근할 수 있는지 확인합니다.
  • project, job, 및 ref 조합이 존재하고 원하는 의존성을 결과로 생성하는지 확인합니다.
  • 사용 중인 변수들이 올바른 값으로 평가되는지 확인합니다.

needs:pipeline:job로 구성된 작업의 경우

필요한 아티팩트를 검색할 수 없습니다. 오류는 다음과 같은 구성으로 needs:pipeline:job를 사용하는 작업에서 발생할 수 있습니다:

rspec:
  needs:
    - pipeline: $UPSTREAM_PIPELINE_ID
      job: dependency-job
      artifacts: true

이 오류를 문제 해결하려면 다음 사항을 확인하세요:

  • $UPSTREAM_PIPELINE_ID CI/CD 변수가 현재 파이프라인의 부모-자식 파이프라인 계층에 있는지 확인합니다.
  • pipelinejob 조합이 존재하고 기존 파이프라인으로 해결되는지 확인합니다.
  • dependency-job이 실행되고 성공적으로 완료되었는지 확인합니다.

업그레이드 후 작업이 UnlockPipelinesInQueueWorker를 표시함

작업이 정지되고 UnlockPipelinesInQueueWorker라는 오류가 표시될 수 있습니다.

이 문제는 업그레이드 후 발생합니다.

우회 방법은 ci_unlock_pipelines_extra_low 기능 플래그를 활성화하는 것입니다.

기능 플래그를 전환하려면 관리자인지 확인해야 합니다.

GitLab SaaS에서:

  • 다음 ChatOps 명령어를 실행하세요:

    /chatops run feature set ci_unlock_pipelines_extra_low true
    

GitLab 자체 관리에서:

  • ci_unlock_pipelines_extra_low라는 기능 플래그를 활성화하세요.

자세한 내용은 병합 요청 140318에서 확인하세요.