본문 바로가기

기타/GitLab

.gitlab-ci.yml 작성

GitLab에서 .gitlab-ci.yml 설정

GitLab > Settings > CI/CD의 General에 가보면 기본적으로 .gitlab-ci.yml을 해당 프로젝트의 CI/CD 설정 파일로 사용한다.

.gitlab-ci.yml는 설정파일이므로 제일 상단에 둔다.

.gitlab-ci.yml 구성

  • before_script: 작업 전 실행되는 명령어
    • CHCP 65001: PowerShell 명령어. UTF-8로 인코딩 변경
  • variables: .gitlab-ci.yml에서 사용할 변수 선언

ID나 Password 등 보안에 민감한 변수는 GitLab의 Settings > CI/CD 의 Variables에서 세팅해서 사용할 수 있다.

stages

  • Stages: 수행할 작업(job)을 실행할 시기를 정의.
    • 작성한 순서대로 실행된다.
      예를 들면, package -> db_depoloy -> app_deploy 순으로 실행된다.

GitLab의 Pipeline이 돌 때 Stages를 확인할 수 있다.

job

job 이름, job이 실행될 stage

수행할 작업을 의미한다.

branch 선택

job이 실행 될 branch를 선택한다. 선택한 branch가 merge될 때 job이 실행된다.
master branch가 merge될 때 'deploy:sgl-test' 라는 job이 실행된다.

여러 branch가 merge될 때 공통된 job을 사용할 수 있다.
아래는 develop branch나 master branch가 merge될 때 'build'라는 job이 실행된다.

Runner 선택

  • tag로 job을 수행할 Runner를 선택한다.
  • 선택된 Runner에서 script를 실행한다.
    설치 및 설정 방법은 GitLab Runner 설치를 참조한다.
  • 여러개의 tag를 설정하면, 해당 tag를 모두 가지고 있는 Runner가 선택된다.

Runner는 GitLab의 Settings > CI/CD 의 Runners에서 확인할 수 있다.

variables, script

variables: Job에서 사용할 변수
script: Runner가 수행할 script.

Runner가 수행하는 Script 종류는 GitLab-Runner가 설치된 서버의 GitLab-Runner 설치 폴더의 config.toml에서 확인할 수 있다.

 

images

images: 사용할 docker image

artifacts

아래와 같이 'build'라는 job이 Runner에서 실행되면 GitLab-Runner가 Git으로부터 master branch의 소스를 fetch받아 maven build하여 배포 파일인 artifcats를 생성한다.

생성된 artifacts는 GitLab-Runner의 target에서 확인할 수 있다.

Build가 성공적으로 끝나면 GitLab 서버에 생성된 Artifacts를 Uploading한다.

.gitlab-ci.yml의 artifacts는 Uploading 된 Artifacts 관련 설정 부분이다.

  • name: Artifacts 이름
  • expire_in: GitLab 서버에 보관되는 기간
  • paths: GitLab 서버에서 Artifacts가 보관되는 위치

Uploading된 Artifacts는 해당 Pipeline의 Job에서 보관되는 기간동안 Donwload 받을 수 있다.

Browse를 클릭하면 설정한 Path에 있는 Job Artifacts를 확인할 수 있다.

GitLab 서버에 Uploading 된 Artifacts는 Deploy 할 때 Application 서버에서 Artifiacts를 다운로드 받아 사용할 수 있다. GITLAB Runner에서 Fetch할 때 Branch의 소스와 Artifacts 모두 내려받는다. 참고로, Build를 하지 않고 Deploy만 할 때도 Script를 돌리기 위해 Runner를 배포할 Application 서버에 설치해야 한다.

manual 여부

when: manual로 지정해놓으면, pipeline에서 자동으로 job이 수행되는 것이 아니라, manual로 재생 버튼을 눌러주어야만 Job이 실행된다.

environments

environments: GitLab의 Environments에 사이트를 등록한다.

  • name: 사이트 이름
  • url: 사이트 URL

GitLab의 Deployments > Enviroments에서 확인할 수 있다.

공식 문서

.gitlab-ci.yml file에 관한 설정 정보를 아래 공식 문서에서 확인할 수 있다.
https://docs.gitlab.com/ee/ci/yaml/

'기타 > GitLab' 카테고리의 다른 글

Git workflow  (0) 2022.12.10
Window 서버 GitLab Runner 설치  (0) 2022.02.17