gitlab ci/cd 살펴보기

john·2022년 2월 24일
1

gitlab ci/cd

CI란 무엇인가?

개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미

CI/CD 파이프라인

파이프라인은 Jobs와 Stages로 구성

  • Jobs 수행할 작업을 정의: 예를 들면 코드를 컴파일 하거나 테스트하는 작업
  • Stages jobs 를 실행할 시기를 정의

Job는 Runner에 의해 실행.

⇒ Stages 내의 여러개의 Jobs가 병렬로 실행

Stage1 => Jobs1 => Jobs2 => Stage2

Stage가 성공적으로 종료되면 파이프라인은 다음 Stage로 이동

만약, Stage 안의 Job이 실패하게 되면 다음 Stage로 이동하지않고 파이프라인이 종료된다.

수동배포 설정

파이프라인을 자동으로 실행 시킬 수 있지만 배포 할때는 수동 작업이 필요

stages:
  - test
  - build
  - deploy

test:
  stage: test
  script: echo "Running tests"

build:
  stage: build
  script: echo "Building the app"

deploy_staging:
  stage: deploy
  script:
    - echo "Deploy to staging server"
  only:
    - master

deploy_prod:
  stage: deploy
  script:
    - echo "Deploy to production server"
  when: manual
  only:
    - master
  • test 유닛 테스트와 같은 테스트들을 실행
  • build 도커와 같은 경우 이미지를 빌드
  • deploy 쿠버네티스 같은 경우, deployment 반영? 병합?
  • when 옵션
    • alwaws
    • delayed
    • manual
    • never
    • on_failure
    • on_success

수동 job 실행 시 변수 설정

stages:
  - build
  - test
  - deploy

variables:    # 전역 변수
  NAME: 'assu'

build-phase:      # 임의의 job 이름..
  stage: build
  tags:
    - ci-tag
  except:
    - dev
  before_script:
    - echo 'build-phase before script, except dev'
  script:
    - chcp 65001    # UTF-8 설정
    - echo 'build-phase script, except dev'
  after_script:
    - echo 'build-phase after_script, except dev'

test-phase:      # 임의의 job 이름
  stage: test
  tags:
    - ci-tag
  except:
    - dev
  before_script:
    - echo 'build-phase before script, except dev'
  script:
    - chcp 65001    # UTF-8 설정
    - echo 'build-phase script, except dev' $NAME
  after_script:
    - echo 'build-phase after_script, except dev'

deploy-phase:      # 임의의 job 이름
  stage: deploy
  tags:
    - ci-tag
  when: manual
  only:
    - master
  before_script:
    - echo 'deploy-phase before script, except dev'
  script:
    - chcp 65001    # UTF-8 설정
    - echo 'deploy-phase script, except dev'$NAME
  after_script:
    - echo 'deploy-phase after_script, except dev'

파이프라인 아키텍처 - Basic

파이프라인 아키텍처 - DAG (Directed Acyclic Graph)

⇒ 마이크로서비스의 배포처럼 복잡한 배포 처리 시 특히 효율적

파이프라인 아키텍처 - Child/Parent Pipelines

rules

job1:
  tags:
    - ci-tag
  stage: build
  script:
    - echo event
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
      when: delayed
      start_in: '30 seconds'
      allow_failure: false
    - if: '$CI_COMMIT_BRANCH == "master22"'
      when: delayed
      start_in: '50 minutes'
      allow_failure: true
job:
  script: "echo Hello, Rules!"
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      when: never
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
      when: never
    - when: on_success

workflow

test => build => deploy

test: unit, e2e 등 test 수행

build: 도커 이미지 빌드 및 푸쉬 
profile
developer

0개의 댓글