.gitlab-ci.yml 파일을 생성해 CI/CD 파이프라인을 정의합니다. 이 파일에는 어떤 작업(Job)을 어떤 순서(Stage)로 실행할지, 어떤 조건에서 실행할지 등을 YAML 형식으로 기술코드 테스트는 소프트웨어가 의도한 대로 동작하는지, 오류나 결함이 없는지 확인하기 위해 다양한 방법으로 코드를 검증하는 과정. 테스트는 소프트웨어의 품질을 높이고, 유지보수성을 확보하며, 개발 과정에서 발생할 수 있는 문제를 조기에 발견하는 데 중요한 역할
오프라인 환경 기준
.gitlab-ci.yml 생성프로젝트 루트 디렉토리에 생성
stages:
- test
pytest:
stage: test
image: pytest:8.1.1
script:
- pytest --junitxml=pytest-results.xml
tags:
- docker
- pytest
artifacts:
reports:
junit: pytest-results.xml
# Dockerfile
FROM python:3.10.16-slim
# 시스템 패키지 설치
RUN apt-get update && apt-get install -y \
gcc \
g++ \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# requirements.txt 설치
COPY requirements.txt .
RUN pip install --upgrade pip && pip install -r requirements.txt && \
pip cache purge
# requirements.txt
pandas==2.3.0
numpy==2.2.6
scikit-learn==1.7.0
torch==2.6.0
torchaudio==2.6.0
torchvision==0.21.0
tensorboard==2.19.0
tensorboardX==2.6.4
ray[default]==2.43.0
mlflow==2.20.4
click==8.1.7
pydantic==2.10.6
h5py==3.13.0
pytest==8.1.1
# Docker image 옮기기
docker save -o pytest.tar pytest:8.1.1
scp -P <PORT> pytest.tar sungyunkim@<IP>:<DIR>
docker load -i pytest.tar
sudo vi mlops/gitlab-runner/config.toml
[[runners]]
name = "automl_runner"
url = "http://<IP:PORT>"
id = ID
token = "TOKEN"
token_obtained_at = 2025-06-26T05:57:34Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "pytest:8.1.1"
pull_policy = "never"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
network_mtu = 0
# 실행이 잘 안되면
docker exec -it gitlab-runner /bin/bash
gitlab-runner run
