-
[GitLab] GitLab Runner를 이용한 자동 통합 배포 시스템 구축기타/Git 2024. 10. 17. 14:11
들어가기 전,
프로젝트의 기능 개발이 일단락 된 후,
테스트, 프로젝트 문서화, 코드 수정, 배포를 반복하면서 자동 통합 배포 시스템이 절실히 필요해졌고...
공부해서 적용해보기로 했다.
여러가지 통합 배포 툴이 있는데, 그 중에서도 나는 GitLab에서 제공하는 GitLab Runner를 사용하여 자동 통합 배포 시스템을 구축해보았다. (회사에서는 설치형 GitLab을 사용하고 있었고, 플러그인을 사용할 만큼 복잡한 배포 프로세스가 필요하지 않았기 때문에...)
본 글은 React로 만든 프로젝트를 Build하여 nginx 기동 경로에 배포하는 과정을 기준으로 작성되었습니다.
빌드 및 배포 서버 OS 환경 : CentOS Stream release 8
React 버전 : 18.2.0
동작 프로세스의 이해
우선 GitLab과 GitLab Runner의 동작 프로세스는 아래와 같다.
GitLab에 소스가 올라가면 프로젝트의 .gitlab-ci.yml에 설정해둔 pipeline을 따라
GitLab Runner(실행환경)이 동작하고, 동작하는 결과를 GitLab 페이지에서 확인할 수 있다.
설치 및 설정
1. 빌드 및 배포할 서버에 gitlab-runner를 설치한다. (root 계정으로 혹은 sudo 명령어 사용)
$ curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | bash $ yum install gitlab-runner
* React 프로젝트를 빌드하고 실행시킬 NodeJs 와 Npm는 사전에 설치되어 있어야 한다.
2. 설치한 서버에 GitLab Repository별 Gitlab Runner 를 등록
$ sudo gitlab-runner register
$ Enter the GitLab instance URL (for example, https://gitlab.com/):
- 연결할 GltLab의 URL을 입력
$ Enter the registration token:
- 연결할 GitLab Repository의 Setting > CI/CD > Runner (expand) 에 있는 token을 입력
$ Enter a description for the runner:
- runner에 대한 설명
$ [localhost.localdomain]:
- runner를 구분할 수 있는 이름을 작성
$ Enter tags for the runner (comma-separated):
- 해당 러너에서 사용할 tags를 작성. 여러개 작성 시 ',' (comma)로 구분
$ Enter optional maintenace note for the runner:
- 이 옵션의 의미는 잘 모르겠다..!
위 내용을 모두 작성 후, 재시작
$ gitlab-runner restart
GitLab 페이지에서 등록된 Runner를 확인할 수 있다.
기타 명령어
# 상태 확인 $ gitlab-runner status # 서버에 등록된 runner 확인 $ gitlab-runner list
3. React Project의 최상위 경로에 .gitlab-ci.yml을 작성하여 git push
.gitlab-ci.yml
variables: CI: "false" stages: - modules - build - deploy npm: stage: modules cache: paths: - node_modules script: - npm ci --legacy-peer-deps build-job: stage: build cache: paths: - build script: - npm run build:stag only: - main tags: - staging deploy-stag: stage: deploy cache: paths: - build script: - sudo rm -rf /home/project/app - sudo cp -r build /home/project/app
1) 최상위 depth에 작성된 npm, build, deploy를 jobs 라고 부른다. (하나의 작업 단위)
2) variables > CI: "false"
- 프로젝트 빌드 시 warning이 있을 때, job이 실패하기 때문이다.
3) stages
- 작성된 stage의 순서대로 실행된다.
4) only
- branch를 작성하면 되는데, 해당 job은 only에 작성한 브랜치에 변경사항이 있을 때만 실행된다.
5) tags
- gitlab-runner 를 등록할 때, runner에 등록한 tag와 일치하는 경우 해당 runner가 실행된다.
6) deploy-stag>script 에서 사용하는 sudo 명령어
- gitlab-runner 를 설치하면 gitlab-runner가 사용자로 등록되고, 해당 계정으로 script가 실행되는데 이때 sudo 명령어 권한을 주지 않았으면 error가 발생한다.
- 사용자에게 sudo 명령어 권한을 주는 방법에 대한 포스팅 => https://stirringdev.tistory.com/124
그 외...
1) gitlab-runner 설치된 server에서 clone된 소스코드 경로
gitlab-runner를 설치하면 gitlab-runner가 사용자로 등록 되는데, 해당 계정으로 로그인해서 폴더를 뜯어보면 gitlab의 repository에 있는 소스코드가 clone 되어 있는 것을 확인할 수 있다.
2) gitLab-runner 에서 등록한 runner 설정 변경하기
편집하고자 하는 runner의 편집 버튼을 누르고
- Run untagged jobs 를 체크하게 되면, .gitlab-ci.yml에 작성한 tags가 없는 job이 해당 runner에서 실행된다.
'기타 > Git' 카테고리의 다른 글
[GitLab] CI/CD와 Microsoft Teams 알림 연동 (feat.WebHooks) (0) 2024.10.18 [AWS/CodeCommit] 프로젝트별(AWS계정별) 자격증명 설정하기 (0) 2023.10.13 [github] macOS에서 ssh 연결하기 (0) 2023.04.10 [Github] 깃허브 프로필의 Overview 작성하는 방법 (0) 2022.06.01 [GIT] 내 컴퓨터에서 만든 프로젝트를 github에 올리기 (0) 2022.05.29