본문 바로가기
FrontEnd

[Github] Github Actions를 이용한 CI/CD

by 푸고배 2022. 2. 21.

CI/CD란?

CI란?

지속적인 통합으로, 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합되는 것을 의미한다.

CI가 필요한 환경

  • 다수의 개발자가 형상관리 툴(Git, SVN 등)을 공유하여 사용하는 환경
  • MSA(Micro Service Archietecture) 환경

CI의 핵심 목표

  • 버그를 신속하게 찾아 해결
  • 소프트웨어 품질 개선
  • 새로운 업데이트의 검증 및 릴리즈 시간을 단축

CD(Continuous Delivery & Continuous Deployment)란?

공유 레포지토리로 자동으로 Release하고(Continuous Delivery), Production 레벨까지 자동으로 deploy하는 것(Continuous Deployment)을 의미한다. 즉, 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것을 의미한다.

 

Github Actions이란?

Github에서 저장소를 기반으로 소프트웨어 개발 워크플로우를 자동화 할 수 있는 도구이다.

Github 내부에서 프로젝트를 빌드, 테스트, 릴리즈 또는 배포를 지원하는 기능으로서, Github에서 제공하는 CI/CD 도구라고 생각하면 된다.

 

가격정보

Public Repository에 한해서 무료이며, Private Repository에 대한 가격정보는 아래 공식 홈페이지에서 확인할 수 있다.

 

Features • GitHub Actions

Easily build, package, release, update, and deploy your project in any language—on GitHub or any external system—without having to run code yourself.

github.com

 

Github Action의 4가지 주요 개념

1. Workflow

  •  Workflow는 프로젝트를 빌드, 테스트, 패키지, 릴리즈 또는 배포하기 위한 전체적인 프로세스이다.
  • 최상위 개념으로 여러개의 Job으로 구성되며, Event를 기반으로 동작한다.
  • Workflow 파일을 만들어 전달하면 Github Action이 실행된다.
  • Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장된다.

2. Event

  • Workflow를 트리거하는 특정 활동이나 규칙
  • 특정 브랜치로 Push, Pull Request, 특정 시간대에 반복 활동, 외부 이벤트 실행 등

3. Job

  • Job은 여러 Step으로 구성되고, 가상 환경의 인스턴스에서 실행된다.
  • 다른 Job에 의존 관계를 가질 수 있고, 독립적으로 병렬 실행도 가능하다.

4. Step

  • Step은 순차적으로 명령어를 수행한다.
  • Task들의 집합으로, Command나 Action을 수행할 수 있다.

5. Action

  • Workflow의 가장 작은 블럭으로, Job을 만들기 위해 Step들을 연결할 수 있다.
  • 재사용이 가능한 컴포넌트로, 개인적으로 만든 Action을 사용할 수도 있지만 Marketplace에 있는 공용 Action을 사용할 수 있다.

 

Workflow 생성하기

다음은 Node.js 사용 시, 예제로 제공하는 workflow yml 파일이다.

name: Node CI
on: [push]
jobs: ## job 들을 명시
  build: ## job id
    runs-on: ubuntu-latest ## 해당 job의 구동 환경을 정의
    strategy:
      matrix:
        node-version: [8.x, 10.x, 12.x]
    steps:
    - uses: actions/checkout@v1
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: Npm Install, build and test
      run: |
        npm ci
        npm run build --if-present
        npm test
      env:
        CI: true
  • name : workflow의 이름
  • on : workflow의 Event를 명시
    • cron 문법
    • push | pull-request와 같은 github 이벤트를 구독
    • 실행할 브랜치 제한
    • paths로 특정 패턴을 설정해 해당 패턴에 일치하는 파일 변경 시 workflow 실행이 가능
    • paths-ignore는 paths와 반대 기능
# 10분마다 실행 workflow
on:
  schedule:
    - cron: '*/10 * * * *'

# master, dev 브랜치에 push 된 경우에 실행
on:
  push:
    branches: [master, dev]

# master, dev 브랜치에 push 되었고,
# js파일의 변경이 있을 때에만 트리거,
# doc 디렉토리의 변경에는 트리거 하지 않게 하고싶은 경우
on:
  push:
    branches: [master, dev]
    paths:
      - "**.js"
    paths-ignore:
      - "doc/**"
  • jobs : 등록된 job들은 기본적으로 병렬 실행

더 많은 workflow 구문은 아래에서 확인할 수 있다.

 

Workflow syntax for GitHub Actions - GitHub Docs

About YAML syntax for workflows Workflow files use YAML syntax, and must have either a .yml or .yaml file extension. If you're new to YAML and want to learn more, see "Learn YAML in Y minutes." You must store workflow files in the .github/workflows directo

docs.github.com

 


Reference

 

CI/CD란 무엇인가 (Feat. DevOps 엔지니어)

안녕하세요. 개발자의 용어를 쉽고 명확하게 설명해드리는 개발자 김모씨입니다. CI/CD ?! 개발자로 밥먹고 사시는 분들이시라면, 혹은 IT서비스 업계에 종사하시는 분들이라면, 한 번 쯤은 들어

artist-developer.tistory.com

 

Github Actions를 이용해 CI/CD 파이프라인 구성하기

Github Actions를 통해 코드 변경사항 반영에 따라 진행되는 workflow를 자동화하는 과정에 대해 기록합니다.

hwasurr.io

 

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

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

insight-bgh.tistory.com

 

반응형

댓글