ezinc 교육 자료
Search posts...

Categories

  • All Posts16
  • 3rabbitz1
  • 클립리포트6
  • Ezworks3
  • Git5
  • 문서 작성 가이드1
© 2026 Git Static Doc Server. All rights reserved.
Open Source Licenses
Git•2026년 5월 12일

GitLab CI/CD: 아티팩트 업로드 실패 및 500 오류 해결 가이드

GitLab Pipeline 실행 중 빌드 결과물(Artifacts)을 서버로 전송하는 단계에서 갑자기 500 Internal Server Error가 발생하며 작업이 중단되는 경우가 있습니다. 이 문서는 해당 오류의 원인인 서버 디스크 용량 부족 문제를 진단하고 해결하는 방법을 설명합니다.

1. 증상 및 로그 분석

파이프라인 로그의 Uploading artifacts... 단계에서 다음과 같은 재시도 메시지와 오류가 반복적으로 나타납니다.

Uploading artifacts...
/builds/gknu/gknu/target/gknu: found 10726 matching artifact files and directories 
...
WARNING: Uploading artifacts as "archive" to coordinator... 500 Internal Server Error
WARNING: Retrying...                                context=artifacts-uploader error=invalid argument
...
FATAL: invalid argument                            
ERROR: Job failed: exit code 1

NOTE

빌드 서버(Runner) 자체의 디스크가 충분하더라도, 결과물을 받아 저장하는 GitLab 메인 서버의 디스크가 가득 찬 경우에도 위와 동일한 500 에러[1]가 발생합니다.


2. 원인 진단

가장 먼저 서버에 접속하여 실제 디스크 사용량을 확인해야 합니다. 특히 GitLab 데이터가 실제로 저장되는 볼륨의 잔여 공간을 확인하는 것이 중요합니다.

# 디스크 사용량 확인
df -h

확인 결과 예시:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       500G   73G  427G  15% /data

IMPORTANT

현재 시스템은 과거 용량 부족 문제로 인해 /data 볼륨을 신규로 할당받아 이미 한차례 이관을 완료한 상태입니다.

물리적인 데이터는 /data/service 경로에 저장되어 있으며, 관리 편의를 위해 루트 경로의 services 폴더가 이를 바라보도록 심볼릭 링크가 설정되어 있습니다.

# 설정된 심볼릭 링크 상태 (lrwxrwxrwx)
services -> /data/service

3. 해결 방법

방법 1: 불필요한 데이터 정리

본격적인 증설 전에 Docker의 캐시나 불필요한 이미지 등을 정리하여 임시 공간을 확보할 수 있습니다.

# 사용하지 않는 컨테이너, 네트워크, 이미지 일괄 삭제
docker system prune -f

방법 2: 데이터를 새로운 디스크로 마이그레이션

디스크를 추가 증설한 경우, 기존 /services/gitlab 하위의 data 디렉토리를 새로운 마운트 지점으로 옮겨야 합니다.

graph TD A[서비스 중지] --> B[데이터 이동] B --> C[심볼릭 링크 또는 경로 수정] C --> D[서비스 재시작] D --> E[정상 동작 확인]
  1. 서비스 중단: 데이터 일관성을 위해 실행 중인 모든 컨테이너를 내립니다.

    cd /services/gitlab
    docker compose down
    
  2. 데이터 이동: 실제 데이터가 저장된 data 폴더를 증설된 디스크 경로로 이동시킵니다.

    # 예: /new_disk 경로로 이동하는 경우
    mv /services/gitlab/data /new_disk/
    
  3. 심볼릭 링크 생성: 기존 /services/gitlab/data 경로를 통해 새로운 위치의 데이터를 참조할 수 있도록 심볼릭 링크[2]를 생성합니다.

    # /new_disk/data를 기존 경로인 /services/gitlab/data로 연결
    ln -s /new_disk/data /services/gitlab/data
    
  4. 서비스 재시작:

    docker compose up -d
    

IMPORTANT

데이터를 옮길 때는 반드시 root 권한으로 실행하며, 파일 소유권과 권한이 그대로 유지되어야 서비스 기동 시 권한 오류가 발생하지 않습니다.

CAUTION

마이그레이션 작업 전에는 반드시 중요한 데이터를 백업하시기 바랍니다. 디스크 이동 중 예기치 못한 오류로 데이터가 손상될 수 있습니다.



  1. GitLab 서버는 아티팩트를 업로드받을 때 일시적으로 /var/opt/gitlab/gitlab-rails/shared/artifacts/tmp 경로 등을 사용합니다. 이 공간이 부족하면 HTTP 500 응답을 보냅니다. ↩︎

  2. ln -s [실제경로] [연결할이름] 명령어를 사용하면 설정 파일을 고치지 않고도 물리적인 저장 위치만 바꿀 수 있어 관리가 편리합니다. ↩︎

← Back to all posts