GitLab > Settings > CI/CD의 General에 가보면 기본적으로 .gitlab-ci.yml을 해당 프로젝트의 CI/CD 설정 파일로 사용한다.
.gitlab-ci.yml는 설정파일이므로 제일 상단에 둔다.
ID나 Password 등 보안에 민감한 변수는 GitLab의 Settings > CI/CD 의 Variables에서 세팅해서 사용할 수 있다.
Stages: 수행할 작업(job)을 실행할 시기를 정의.
GitLab의 Pipeline이 돌 때 Stages를 확인할 수 있다.
수행할 작업을 의미한다.
job이 실행 될 branch를 선택한다. 선택한 branch가 merge될 때 job이 실행된다.
master branch가 merge될 때 'deploy:sgl-test' 라는 job이 실행된다.
여러 branch가 merge될 때 공통된 job을 사용할 수 있다.
아래는 develop branch나 master branch가 merge될 때 'build'라는 job이 실행된다.
Runner는 GitLab의 Settings > CI/CD 의 Runners에서 확인할 수 있다.
variables: Job에서 사용할 변수
script: Runner가 수행할 script.
Runner가 수행하는 Script 종류는 GitLab-Runner가 설치된 서버의 GitLab-Runner 설치 폴더의 config.toml에서 확인할 수 있다.
images: 사용할 docker image
아래와 같이 '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 관련 설정 부분이다.
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 서버에 설치해야 한다.
when: manual로 지정해놓으면, pipeline에서 자동으로 job이 수행되는 것이 아니라, manual로 재생 버튼을 눌러주어야만 Job이 실행된다.
environments: GitLab의 Environments에 사이트를 등록한다.
GitLab의 Deployments > Enviroments에서 확인할 수 있다.
.gitlab-ci.yml file에 관한 설정 정보를 아래 공식 문서에서 확인할 수 있다.
https://docs.gitlab.com/ee/ci/yaml/