CI/CD와 Github Actions

starkensin·2020년 12월 14일
0
post-thumbnail

CI/CD는 왜 필요할까?

전통적 배포 파이프라인
1. 개발
2. 로컬 테스트
3. 테스트 환경에 배포
4. 서비스 제품에 배포

-> 반복적인 작업이다!

지루하고 반복적인 이러한 작업을 자동화 하면 좋지 않을까?라는 생각이 듭니다.

CI/CD란?

위에서 살펴본 일련의 반복되는 프로세스를 자동화 한 것을 CI/CD라고 합니다.

CI : 지속적 통합(Continuous Integration)

  • 개발을 하면서 지속적으로 코드에 대한 통합을 진행함으로써 품질을 유지하게 하는 자동화 프로세스. 새로운 코드가 추가되면 자동으로 빌드 및 테스트를 통해 이상 여부를 확인한다.

CD : 지속적인 배포( Continuous Deployment)

  • CI된 코드를 테스트/운영 서버에 자동으로 배포한다.
    여기서 지속적 이라는 용어는 ‘자동’이라고 생각하면 편합니다.

Github Actions!

Github Actions는 이러한 CI/CD를 가능하게 해주는 Jenkins, CircleCI 등과 같은 여러 도구들 중에 하나입니다.

자! 그럼 이러한 여러 도구 중에 Github Actions에 대해서 살펴보도록 하겠습니다.

Github Actions 용어 정리

  • 워크플로우: 자동화할 전체 작업 프로세스를 의미합니다.
  • 이벤트: 워크플로우가 진행될 선제 조건을 의미합니다. 예를 들어 PR을 생성하는 것, push를 하는 것 등이 있습니다.
  • 러너: 워크플로우가 실행될 운영체제 환경을 의미합니다.
  • 액션: 워크플로우 안에 정의된 개별 작업입니다. 빌드, 테스트 및 배포 등 내가 원하는 다양한 동작을 실행시킬 수 있습니다.

워크플로우 구조는 아래와 같습니다.

name: <WORKFLOW_NAME>
on: <EVENT>
jobs:
  <JOB_NAME>:
    runs-on: <RUNNER>
    steps:
    - name: <ACTION_NAME>
      uses: <ACTION>

Github Actions 실습

아주 간단한 워크플로우를 작성해 보도록 하겠습니다.

워크플로우는 yaml 문법으로 작성합니다.

name: CICD # 워크플로우 이름
on: # 워크플로우 실행 조건
  push: # main 브랜치에 push가 발생하면
    branches: [main]
  pull_request:	# main 브랜치에 pull_request가 발생하면
    branches: [main]
jobs: # 내가 실행시킬 작업
  build:
    runs-on: ubuntu-latest # 우분투 os에서

    steps:
      - name: checkout master
        uses: actions/checkout@master # master 브랜치로 checkout하고

      - name: install
        run: yarn install # yarn install 명령 실행

      - name: lint and build
        run: | # 다중 명령(yarn lint와 yarn build) 실행
          yarn lint
          yarn build
          
      - name: test
        run: yarn test # yarn test 실행

위 예제가 실제 github repository에 적용된 것은 https://github.com/starkensin/CICD 에서 확인할 수 있습니다.


더 다양한 사용법을 알고 싶으시다구요?
자세한 사용법은 https://docs.github.com/en/free-pro-team@latest/actions 공식 문서에서 확인할 수 있습니다.

0개의 댓글