본문 바로가기
스터디일지/PROJECT

[2주 프로젝트] Trello 프로젝트 - PART 3 CI/CD 파이프라인 구축

by 똥쟁이핑크 2023. 11. 18.

CI/CD란?

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

 

CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이

CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.

www.redhat.com

https://www.servicenow.com/kr/products/devops/what-is-cicd-pipeline.html

 

CI/CD 파이프라인이란? - ServiceNow

CI/CD 파이프라인은 새로운 소프트웨어를 만들고, 배포하고, 운영하는 프로세스입니다. 이 프로세스의 모니터링 및 자동화는 효과에 핵심적인 역할을 합니다.

www.servicenow.com

CI

Continuous Integration = 지속적 통합

여러 개발자들이 동일한 애플리케이션의 각기 다른 기능을 동시에 작업할 수 있도록 하는 것이 목표

여러 개발자들의 코드를 변경사항에 동시에 적용할 때 충돌이 생길 가능성이 있다.

그래서 코드 변경 사항을 공유 브랜치에 올리고 병합 하는데 이렇게 하면 변경사항이 애플리케이션을 손상시키지 않도록 자동으로 구축하고 테스트 실행을 통해 제대로 변경사항이 적용 되었는지 확인한다.

기존 코드와 신규코드의 충돌이 발생하면 CI를 통해 버그를 빠르게 수정할 수 있다.

 

 

CD

Continuous Delivery = 지속적 제공

유효한 코드를 Repository에 자동으로 Release한다. 예를 들면 GitHub

그런데 CI가 먼저 구축이 되어 있어야 가능하다.

목표는 프로덕션 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것

 

 

Continuous Deployment = 지속적 배포

CI/CD의 마지막 단계

지속적 제공의 확장된 형태로 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화 한다.

 

 

CI/CD의 관련 툴은 GitHub Actions, Jenkins, Travis-CI가 있다.

3가지 중에 우리 조에서는 GitHub Actions를 사용하여 CI/CD 파이프라인을 구축하기로 했고 

설명과 과정은 다음과 같다.

 

  1. Workflow 생성: .github/workflows 디렉토리에 YAML 형태로 저장합니다
  2. Event 설정: Workflow를 실행시키는 이벤트를 설정합니다. 이벤트는 Push, Pull Request, Commit 등의 특정 행동을 의미합니다.
  3. Job 설정: Job은 동일한 Runner에서 실행되는 여러 Step의 집합을 의미합니다. 하나의 Workflow 내의 여러 Job은 독립적으로 실행되지만, 필요에 따라 의존 관계를 설정하여 순서를 지정해줄 수 있습니다.
  4. Step 설정: Step은 커맨드를 실행할 수 있는 각각의 Task를 의미하는데, Shell 커맨드가 될 수도 있고, 하나의 Action이 될 수도 있습니다.
  5. Action 설정: Action은 Job을 만들기 위해 Step을 결합한 독립적인 커맨드로, 재사용이 가능한 Workflow의 가장 작은 단위의 블럭입니다.
  6. Runner 설정: Runner는 Github Actions Workflow 내에 있는 Job을 실행시키기 위한 애플리케이션입니다.

YAML 파일 작성 예시

# Repository의 Actions 탭에 나타날 Workflow 이름으로 필수 옵션은 아닙니다.
name: CI

# Workflow를 실행시키기 위한 Event 목록입니다.
on:
  # 하단 코드에 따라 develop 브랜치에 Push 또는 Pull Request 이벤트가 발생한 경우에 Workflow가 실행됩니다.
  # 만약 브랜치 구분 없이 이벤트를 지정하고 싶을 경우에는 단순히 아래와 같이 작성도 가능합니다.
  # on: [push, pull_request]
  push:
    branches: [develop]
  pull_request:
    branches: [develop]

  # 해당 옵션을 통해 사용자가 직접 Actions 탭에서 Workflow를 실행시킬 수 있습니다.
  # 여기에서는 추가적으로 더 설명하지는 않겠습니다.
  workflow_dispatch:

# 해당 Workflow의 하나 이상의 Job 목록입니다.
jobs:
  # Job 이름으로, build라는 이름으로 Job이 표시됩니다.
  build:
    # Runner가 실행되는 환경을 정의하는 부분입니다.
    runs-on: ubuntu-latest

    # build Job 내의 step 목록입니다.
    steps:
      # uses 키워드를 통해 Action을 불러올 수 있습니다.
      # 여기에서는 해당 레포지토리로 check-out하여 레포지토리에 접근할 수 있는 Action을 불러왔습니다.
      - uses: actions/checkout@v2

      # 여기서 실행되는 커맨드에 대한 설명으로, Workflow에 표시됩니다.
      - name: Run a one-line script
        run: echo Hello, world!

      # 이렇게 하나의 커맨드가 아닌 여러 커맨드도 실행 가능합니다.
      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.

참고한 사이트 

https://ji5485.github.io/post/2021-06-06/build-ci-cd-pipeline-using-github-actions/

 

GitHub Actions를 이용한 CI/CD 구축하기

Github Actions를 통해 어떻게 React 애플리케이션을 자동으로 배포할 수 있는지 알아봅시다.

ji5485.github.io

 

 

https://goldenrabbit.co.kr/2023/07/05/github-actions%EB%A1%9C-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94%ED%95%B4-%EB%B3%B4%EA%B8%B0a-k-a-ci-cd-1%ED%8E%B8/

 

GitHub Actions으로 배포 자동화해 보기(a.k.a CI/CD) - 1화 - 골든래빗

CI/CD가 뭐냐고요? 쉽게 말해 개발자가 개발을 마치고, 애플리케이션을 빌드하고, 테스트를 하고, 원격 저장소에 코드를 업데이트하고, 이를 배포하는 등의 전 과정을 자동화하는 과정을 말합니

goldenrabbit.co.kr