2023-02-13 12:32:24
GitLab Runner를 윈도우 11에서 구동하고 실행 환경을 Docker로 설정하였다.
Docker는 리눅스로 구동되며 사용하는 이미지는 maven:latest
이다.
gitlab-ci.yml
예시build:
image: maven:latest
stage: build
script:
- ...
cache:
key: "key"
paths:
- target/
tag:
- docker-tag
위의 예시처럼 작성하였다.
그러나 캐시가 제대로 저장이 되지 않았고 동작한 스크립트를 보니 다음과 같은 로그를 확인할 수 있었다.
Getting source from Git repository
00:02
Fetching changes with git depth set to 20...
Reinitialized existing Git repository in /builds/ezinc/prof/.git/
Checking out fca7546c as master...
Removing "..\\..\\..\\cache\\계정명\\프로젝트명\\key-2-protected\\cache.zip"
GitLab Runner는 각 Job마다 저장소를 리셋하는데.
fetch 방식으로 할 경우 변경된 파일들만 지운다.
여기서 ..\\..\\..\\cache\\계정명\\프로젝트명\\key-2-protected\\cache.zip
라는 파일이 삭제되었는데.
실제로 확인해보니 캐시 파일이 저장되어야 할 위치가 아닌 엉뚱한 위치에 생성되었다.
제대로 된 해결 방법은 찾지 못하였고, gitlab의 config.toml
을 수정하여 docker 내부 경로는 host로 바인딩해서 직접 저장하는 방식으로 우회하였다.
예시)
...
[runners.docker]
tls_verify = false
image = "alphin:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/c/바인딩_경로:/바인딩_경로"]
shm_size = 0
...