이번 포스팅은 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 설치과정
- 공식홈페이지에 있는 gitlab-runner.exe 파일을 다운로드 받는다.
- 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 부분을 보면
.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 |
---|