gitlab runner 는 어디서 실행될까 ?

gyeongseon·2023년 4월 30일
0
post-thumbnail

개요

gitlab-ci 스크립트 (Error: error resolving source context: authentication required)

위 gitlab-ci.yaml 스크립트를 작성하다가 궁금한 점이 생겨서 간단하게 정리해봅니다.


💡 저는 최대한 그림으로 표현하고 싶습니다. 필력이 없어서 말이죠… ㅠㅠ

1. 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)


TMI

runner에서 컨테이너를 생성할 때 어떤 툴을 사용하는지 궁금하지 않습니까 ??

저는 궁금해서 일단 docs를 많이 봅니다.

GitLab Runner | GitLab

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에서 확인해보시면 이해하는데 도움이 되실 것 입니다.

profile
경선 :)

0개의 댓글