dh_0e

[특강] CI/CD 본문

내일배움캠프/특강

[특강] CI/CD

dh_0e 2024. 7. 8. 22:47

CI/CD란?

  • 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법

CI(Continuous Integration): 지속적인 통합

  • 추가/변경된 코드를 자동으로 빌드한 후 테스트
  • 테스트에 통과한 경우에만 공유 저장소에 병합
  • 여러 명의 개발자가 동시에 코드 작업을 할 때 서로 충돌할 수 있는 문제를 해결

 

CD(Continuous Delivery or Deployment): 지속적인 제공 or 배포

  • 지속적인 제공, 배포
  • 개발자들이 적용한 변경 사항이 CI 과정을 거쳐 저장소에 자동으로 업로드되는 것
  • 운영팀은 이 저장소에서 애플리케이션을 실 서버 환경으로 배포할 수 있음
  • 개발자의 변경 사항을 저장소에게 고객이 사용 가능한 프로덕션 환경까지 자동으로 배포하는 것

 

  • Workflow: 미리 정의해놓은 작업
  • Trigger event: workflow를 동작시키기 위한 조건
  • Runner: Workflow를 실행하기 위한 VM

 

Worflow 구성

name:

on:

jobs:
  custom-job-name:
    if:
    runs-on: 
    
    steps:
      - name:
        run:
      
      - name:
        uses:
  • name: Workflow의 이름
  • on: Workflow가 언제 실행될지 Trigger Event를 지정
    • workflow_dispatch: 수동 실행
    • push: PUSH 됐을 때
    • pull_request: PR이 생성되거나 상태가 변경 되었을 때
    • workflow_run: 특정 workflow
    • 그 밖의 다양한 Event를 지원
  • jobs: Workflow 내에서 여러 개의 작업을 동시에 또는 순차적으로 진행할 수 있음
    • if: 조건에 따라 job 실행 여부를 결정
    • runs-on: Runner를 지정
      • 기본적으로는 Github에서 제공하는 Runner(GitHub-hosted runner)를 사용
      • Linux: ubuntu-24.04(beta), ubuntu-22.04(= ubuntu-latest), ubuntu-20.04
      • Windows: windows-2022(= windows-latest), windows-2019
      • MacOS: macos-14(= macos-latest), macos-13, macos-12, macos-11
  • steps: 작업 내의 단위 작업을 정의. 각 step은 -(빼기 기호)로 구분
    • name: (선택사항) 단위 작업의 이름
    • run: Runner에서 직접 실행할 command-line 명령을 정의
      • 최대 21,000자까지 명령어 실행 가능
      • | (파이프 연산자)를 이용하면 여러 줄 실행 가능
    • uses: 미리 정의 된 action을 가져와서 사용
      • with: 실행 시 매개변수를 전달