2019. 10. 28. 04:33ㆍ서버 프로그래밍
Gitlab-Runner를 이용하여 Shell로 동작시키는 것은 문제 없이 동작을 했으나, Docker Image를 이용한 빌드, 테스트 및 배포 자동화를 처리하려다가 삽질한 기록이다.
https://docs.gitlab.com/runner/executors/docker.html
https://docs.gitlab.com/runner/install/docker.html
1. 일단 executor를 Shell로 해서 커밋 시 자동으로 파이프라인이 정상으로 동작하는지 확인한다.
2. 한번 git clone을 해서 파이프라인이 실행되면, 다음 파이프라인 실행시 이미 폴더가 있다고 오류가 난다.
먼저 이 문제를 해결해야 하므로, /etc/gitlab-runner/config.toml 을 다음과 같이 변경한다. 반드시 루트에 2개의 폴더를 만든 다음 chmod -R 777 /builds와 chmod -R 777 /cache로 권한을 변경해준다.
그 다음에는 variables에 다음 2줄을 추가해주고 다시 파이프라인을 실행하면 문제가 사라지는 것을 확인할 수 있다.
https://docs.gitlab.com/ee/ci/large_repositories/
3. config.toml 파일을 다음과 같이 수정하면, 드디어 지정한 이미지를 다운로드 받아서 처리하게 된다.
여기서 중요한 것은, 예전 레퍼런스들은 volumes나 privileged 옵션이 runners 바로 밑에 있는데 반드시 runners.docker 항목 밑에 있어야 한다. 이것 때문에 낭비한 시간이 얼마인지... ㅠㅠ
4. 마지막으로 config.toml 파일에 privileged = true를 추가해준다.
https://docs.gitlab.com/runner/executors/docker.html#the-privileged-mode
* 이 외에도 docker에 대한 접근 권한 문제가 있을 때에는 다음과 같이 해결하면 된다.
$ sudo usermod -a -G docker $USER
$ sudo service docker restart
https://stackoverflow.com/questions/48568172/docker-sock-permission-denied
https://docs.docker.com/install/linux/docker-ce/centos/
https://www.sangkon.com/hands-on-docker-part1/