CICD

Gitlab-runner를 이용한 CI/CD 구축하기

Developer trainee_J ^~^ 2023. 5. 22. 14:32

이번 포스팅은  Gitlab-runner를 이용하여 내 PC환경에 CI/CD를 구축해보려고한다. 

작업을 할 때 주로 Airflow와 DB를 메인 컴퓨터에 켜두고 외부에서 노트북으로 작업을 하는데 

이럴경우 노트북에서 DAG를 만들어도 메인 컴퓨터에 바로 적용이 되지 않는다. 그래서 메인 컴퓨터를 서버라 가정하고 

CI/CD를 구축해서 외부에서도 새로운 DAG가 적용될 수 있도록 할 예정이다. 

 

사전 준비작업 

 

1. 저장소 파일 복사하기

우선 github 저장소에 있는 파일들을 새롭게 만든 gitlab 저장소로 옮겨준 후 airflow를 재기동해줬다. 

파일의 위치만 바꼈을 뿐 내부 로직은 바뀐게 없기 때문에 간단하게 작업이 되었다. 

 

2. gitlab에 데이터 push하기 

gitlab 저장소로 이동하여 git push

 

3. gitlab-runner 설치

예전에는 centos 환경에서 gitlab-runner를 설치했었는데 지금은 windows 환경이라서 처음 해보는 영역이었다. 

구글링을 통해 알아보니 https://docs.gitlab.com/runner/install/windows.html 공식 문서에 상세하게 나와있었다. 

 

Gitlab-runner 설치과정 

  1. 공식홈페이지에 있는 gitlab-runner.exe 파일을 다운로드 받는다. 
  2. GitLab-Runner 폴더를 생성한 후 폴더안에서 설치 명령어 입력(power shell 관리자 모드로 실행시켜야한다)
# 공식홈페이지
.\gitlab-runner.exe install 

# 내 환경 
.\gitlab-runner-windows-amd64.exe install


  3. 등록시작

# gitlab-runner 등록 명령어
.\gitlab-runner-windows-amd64.exe register

 

등록 명령어를 입력하면 차례대로 gitlab 저장소의 URL, 토큰값 등등을 입력해야하는데 gitlab이 자체적으로 내 저장소에 맞는 명령어를 생성해준다. gitlab 저장소의 왼쪽 메뉴바에서 Settings - CI/CD를 클릭한 후 show runner installatins ~~ 버튼을 누르면 

이렇게 복사해서 쓰라고 만들어준다 아주 간편한 기능인것 같다. 

추가적으로 이전에 사용했던 gitlab은 구버전이라서 없었는데 gitlab자체에서 runner 생성도 가능한 것 같다. 

아무튼 이 명령어를 입력해주면 URL을 입력해주라고 하는데 이미 명령어에 들어가있으므로 엔터를 눌러주고 토큰도 마찬가지이다.  그 다음 runner에 대한 설명을 입력하고 쭉 진행하다보면 runner의 tag를 입력하라고하는데 이 tag는 CI/CD를 작성할때 필요하니 신중하게 입력해준다.  

그 다음 Enter an executor : 부분은 shell을 입력했다. 

 

이 메세지가 나오면 성공적으로 runner가 지정된 것이다. 이제 다시 setting- CI/CD - runners 부분을 보면 

이런식으로 runner가 생성된것을 확인할 수 있다.

 

.gitlab-ci.yml 작성

gitlab-runner를 설치했으니 원하는 작업을 runner가 수행하도록 gitlab-ci.yml파일을 작성해야한다. 

# 단계를 의미 배포단계만 필요하므로 deploy하나만 선언
stages:
  - deploy

# build라는 job 생성 
build:

  # 이 job은 deploy 단계이며 
  stage: deploy
  
  # 실행할 명령은 'pwd' 이다
  script:
    - pwd
    
  # 사용되는 runner의 tag
  tags:
    - runner_v1

간단하게 다음과 같이 구성했으며 이제 gitlab 저장소에 새로운 commit이 생길때마다 pwd를 출력하는 runner가 작동될것이다. 

 

.gitlab-ci.yml파일을 추가한 뒤 push를 했는데 runner에서 에러가 발생했다. 

 

원인

shell executor를 사용하는데 pwsh라는걸 제대로 인식하지 못한 것 같았다. 구글링을 해보니 pwsh가 유요한 windows 명령이 아니어서 에러가 발생했다고해서 gitlab-runner의 config.toml파일을 수정해야했다. 

config.toml파일은 처음에 생성한 GitLab-Runner 폴더에 존재했고 

pwsh를 powershell로 변경하여 다시 테스트해봤다. 

정상적으로 경로가 찍힌다! 이제 pwd 대신 git pull을 입력하여 gitlab 저장소에 변경사항이 생길경우 메인 PC로 자동으로 배포되게 할 수 있다. 

 

테스트를 위해 메인 PC에서 파일을 수정하지 않고 gitlab 저장소에서 직접 파일을 변경해봤다. 

정상적으로 runner의 파이프라인이 작동했고 메인 PC의 .gitlab-ci.yml파일도 변경되었다. 

이제 외부에서도 메인 PC에 떠 있는 airflow 수정이 가능하게 되었다. 

 

마치며 

gitlab-runner를 이용해서 CI/CD를 구축해본적은 있었지만 그 때는 centos환경이었고 지금 사용하는 gitlab의 버전도 훨씬 낮았었다. 최신 버전의 gitlab을 사용해보니 바뀐것도 많았고, windows환경에서도 runner를 편하게 사용할 수 있다는 점이 매우 신기했다. 이제 외부에서도 쉽게 DAG를 생성하고 배포할 수 있으니 편하게 작업이 가능할 것 같다... 

runner는 만약 다음에 DockerOperator를 사용하게 될 경우 Docker Image를 생성하는 JOB을 생성하여 사용해봐도 될 것 같다. 

'CICD' 카테고리의 다른 글

gitlab-runner CI/CD dubious ownership 에러  (0) 2023.05.23