gitlab-ci 스크립트 (Error: error resolving source context: authentication required)
위 gitlab-ci.yaml 스크립트를 작성하다가 궁금한 점이 생겨서 간단하게 정리해봅니다.
결과적으로 말하면 runner 환경에서 container로 각 실행됩니다.
위 내용을 어디서 확인할 수 있는지 몰라서 일단 먼저 테스트를 했습니다. (대부분 … 사용하는 방법에 대해서만 포스팅이 있었습니다.)
테스트한 방법은 아래와 같습니다. 일단 runner(pod)로 접근했고 해당 pod의 shell로 접근했습니다.
그리고 /tmp/demo-pipeline 이라는 폴더를 생성했습니다.
stages: # List of stages for jobs, and their order of execution
- build
build-job: # This job runs in the build stage, which runs first.
stage: build
script:
- ls /tmp
- pwd
- cat /etc/os-release
위 처럼 확인했습니다.
$ ls /tmp
Cleaning up project directory and file based variables
00:00
Job succeeded
결과적으로 해당 폴더에 아무것도 없는 것을 확인했습니다.
종종 포스팅에서 job끼리 파일을 공유하는 분들이 있었습니다. 그런데 모든 폴더들이 공유된다는 것은 아닙니다. 또 artifact라는 기능을 이용해서 공유할 수 있습니다.
gitlab script 와 관련해서 정리도니 내용은 아래에서 확인할 수 있습니다.
GitLab CI (Continuous integration)
runner에서 컨테이너를 생성할 때 어떤 툴을 사용하는지 궁금하지 않습니까 ??
저는 궁금해서 일단 docs를 많이 봅니다.
If you want your CI/CD job to run commands in a custom Docker container, you might install GitLab Runner on a Linux server and register a runner that uses the Docker executor.
docs에서 이런 말이 등장합니다.
runner 가 linux에 구성된다면 docker를 기반으로 컨테이너를 생성하는 것 같았습니다. 그리고 아래와 같은 문장도 등장합니다.
When you install GitLab Runner in a Docker container and choose the Docker executor to run your jobs, it’s sometimes referred to as a “Docker-in-Docker” configuration.
DinD는 보안적으로 치명적이다고 평가하는 사람들이 많습니다. 더군다나 클러스터의 경우는 더 조심해야하는 개념(?!) 입니다.
도커 컨테이너 안에서 도커 실행하기(Docker in Docker, Docker Out of Docker)
DinD, DooD 에 대한 설명
그래서 build image를 하기 위한 docker사용에 주의가 필요합니다. 이러한 문제를 해결하기 위해 kaniko라는 스택이 있습니다. 해당 내용은 docs에서 확인해보시면 이해하는데 도움이 되실 것 입니다.