DevOps

Github Actions CI/CD 알아보기 - 1

r잡초처럼 2023. 2. 24. 22:31

CI/CD는 지속적인 통합(Continuous Integration)과 배포(Continuous Delivery/Deployment)를 일컫는 말이다. CI/CD는 DevOps의 핵심 개념 중 하나이다. 어떤 구성이 있는지 살펴보자. 여기서는 github actions를 기준으로 설명한다.

 

CI

  • 자동화 프로세스인 지속적인 통합을 의미한다.
  • CI를 성공적으로 구현할 경우 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 레포지토리에 병합된다. 
  • 여러 명의 개발자의 코드가 충돌나는 경우를 이 과정에서 해결할 수 있다.

CD

  • 지속적인 서비스 제공 또는 배포라고 볼 수 있다.
  • 버그 테스트를 거쳐 repo에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 repo에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다.

Github Action

github action은 이러한 CI/CD를 가능하게 해주는 툴 중 하나다. 이러한 툴은 Jenkins, AWS Code Deploy, Code Build 등 다양하게 있다. Github Action을 사용하기 위해선 Github repo에 Acition 탭을 누르면 가능하다.

구성요소 

workflow

  • Workflow는 프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포하기 위한 전체적인 프로세스를 명시한  Yaml 파일이다.
  • 한 개 이상의 job으로 구성되어 있고 Event 기반으로 동작한다.
  • workflow > job > step >action 순으로 명시를 해서 파일을 작성해야 한다.

Event

  • Workflow를 실행하는 특정 활동이나 규칙이다.
  • github에 소스코드를 푸시하면 발생하는 push, pull request, issue 등을 event로 정의할 수 있다.

Job

  • Job은 여러 Step으로 구성되어 있고, 가상 환경의 인스턴스에서 실행한다.
  • 각각의 step들은 일종의 shell script처럼 실행된다.
  • step들은 순서에 따라 실행되며, step끼리 데이터들을 공유할 수 있다.
  • 다른 Job과 의존성을 가질 수 있고, 독립적으로 병렬 실행도 가능하다.

Actions

  • 복잡하고 자주 반복되는 작업을 정의한 커스텀 어플리케이션
  • workflow 파일 안에서 자주 반복되는 코드를 미리 정의할 수 있다.
  • github market에서 공용 Action 또는 다른 사람의 action을 사용할 수 있다.

Runner

  • Github Action Runner는 애플리케이션이 설치된 머신으로, Workflow가 실행될 인스턴스이다.
  • Github에서 호스팅 해주는 Github-hosted runner와 직접 호스팅 하는 Self-hosted runner로 나뉜다

살펴보기

name: learn-github-actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '14'
      - run: npm install -g bats
      - run: bats -v

name

  • workflow의 name을 정의
  • 선택사항이며 깃허브 저장소의 깃허브 액션 탭에서 workflow의 이름을 보여준다.

on

  • 해당 workflow를 실행시키는 이벤트를 정의한다.
  • push 이벤트가 발생했을 때 workflow가 실행되도록 정의한다.

jobs

  • check-bats-version - job의 이름을 정의
  • runs-on : 어떤 호스트에서 실행될지 정의 - ubuntu 가상 머신에서 실행되도록 정의

Steps

  • uses: actions/checkout@v2 - 해당 레포지토리를 pull 받고 이동하는 action 대부분의 workflow에서 사용
  • uses: actions/setup-node@v2 - 노드를 설치하는 action으로 가상머신 안에는 대부분의 프로그래밍 언어가 설치되어 있지 않기 때문에 프로젝트 실행에 필요한 언어들을 action을 통해 다운
  • run: npm install -g bats - run 키워드를 통해 러너가 실행되는 서버에서 명령어를 실행

다음 포스팅에서 실제로 구축해 보자.


참고

https://insight-bgh.tistory.com/473

 

CI/CD 구축하기(1) - Github Action 이란?

1. GitHub Action 이란? Github Action이란 Github 저장소를 기반으로 소프트웨어 개발 Workflow를 자동화 할 수 있는 도구이다. Github 내부에서 프로젝트를 빌드, 테스트, 릴리즈 또는 배포를 지원하는 기능으

insight-bgh.tistory.com

https://velog.io/@sgwon1996/GitHub-Action%EC%9C%BC%EB%A1%9C-CICD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0

 

GitHub Action으로 CI/CD 구축하기

GitHub Action을 통해 이미지 빌드 및 업로드, 컨테이너 배포를 수행하는 파이프라인을 구축해보겠습니다.

velog.io