Contents
REF
해당 컨텐츠는 GitLab Official Docs(https://docs.gitlab.com/ee/ci/yaml/gitlab_ci_yaml.html)를 참고하여 공부한 내용에 대해 기술되었습니다.
공부 중인 관계로, 부족하거나 잘못된 부분이 있을 수 있습니다.
편히 가르쳐주시면 감사하겠습니다.
Prerequisities
- GitLab CI/CD 구성이 완료된 프로젝트
앞서 CI 환경을 구성하며 gitlab-ci.yml의 간단한 예제를 작성였다.
앞으로 나의 환경을 구성하기 위해서 gitlab-ci.yml을 작성하는 방법에 대해 알아보고자 한다.
Validate CI/CD Configuration
gitlab-ci.yml 작성을 위한 editor로 Official Docs는 VS Code와 Pipeline Editor를 언급한다.
VS Code Extension
VS Code에서는 Extension(GitLab Workflow)을 설치하여 GitLab의 전반적인 기능들이 사용가능하다. CI와 관련하여서는 gitlab-ci.yml의 syntax 체크 및 자동완성 기능을 제공한다.
Pipeline Editor
Pipeline Editor는 GitLab 웹페이지에서 사용가능한 에디터로, [CI/CD]-[Editor]로 사용 가능하다.
아래 사진과 같이 구성되어 있으며, 편집, GUI 형태의 Visualize, Lint 를 제공한다.
개인적으로, 대부분 작업을 Pipeline Editor로 하게 될 것 같다. VS Code의 모든 기능을 포함하고, VIsualize를 통해 파이프라인을 한 눈에 볼 수 있음이 매우 메리트있게 보여진다.
Write .gitlab-ci.yml
원하는 .gitlab-ci.yml 작성을 위해서 keyword들에 대한 공부가 선행되어야 한다.
Keyword Reference in GitLab Official Docs: https://docs.gitlab.com/ee/ci/yaml/
Keyword는 Global keywords와 Job keywords로 나뉜다. Global keywords는 pipeline 구성 및 동작과 관계된 키워드들이며, job keywords는 단어 그대로 job 과 관련된 키워드들이다.
GitLab CI는 크게 Stage와 Job에 의해 구성된다. 이 2가지만 이용하여도 기본적인 CI/CD 구성이 가능하다.
Stage - Global keyword
Job을 실행시킬 시기에 대한 정의이며, stages
키워드를 이용한다. stage 안에는 여러 그룹의 job들이 포함될 수 있다.
stage의 순서는 gitlab-ci.yml에 정의한 순서를 따라간다. 즉, 아래와 같이 구성할 경우 build-test-deploy 순으로 구성된다.
stages:
- build
- test
- deploy
stages에 대해 명시적으로 정의하지 않는다면, default pipline은 아래 순서대로 구성된다.
- .pre
- build
- test
- deploy
- .post
Jobs
Job은 .gitlab-ci.yml에서 가장 기본적인 요소이다. gitlab-ci.yml 안에서 임의의 이름을 최상위에 가지며, script 절을 반드시 포함하여야 한다. 또한, 실행될 때 제약사항들에 대해 정의할 수 있다.
job1:
script: "excute-script-for-job1"
job2:
script:
- job2.sh
아래와 같이 slash(/), colon(:), space 를 이용하여 그룹화가 가능하며, dot(.)을 이용해 pipeline에서 처리되지 않도록 hidden 처리할 수 있다.
build ruby 1/3:
stage: build
script:
- echo "ruby1"
build ruby 2/3:
stage: build
script:
- echo "ruby2"
build ruby 3/3:
stage: build
script:
- echo "ruby3"
.hidden_job:
script:
- echo "it's hidden"
Examples
GitLab 에서는 사용자들의 다양한 use case에 대해 example과 template을 제공해주고 있다. 이를 잘 활용한다면 보다 수월한 환경 구성이 가능할 것이다.
'Env > DevOps' 카테고리의 다른 글
GitLab CI 구성 - 간단 예제(with Docker) (0) | 2022.02.23 |
---|---|
GitLab CI 관련 개념 (0) | 2022.02.23 |
댓글