Skip to content

Git action과 Heroku를 이용하여 CI CD

hyejung kim edited this page Sep 14, 2021 · 1 revision

Git Action

1. Github Action

Github 저장소를 기반으로 소프트웨어 개발 workflow를 자동화 할 수 있는 도구! (Github에서 제공하는 CI)

  • Github 저장소에서 등록 시 사용하는 기술에 맞는 workflow 템플릿 이용 가능
  • workflow는 저장소마다 최대 20개까지 등록 가능
  • workflow내 job이라는 단계마다 최대 6시간 동안 실행될 수 있고, 초과하게 되면 자동으로 중지
  • public 계정의 경우 무료이고, private 계정은 무료 사용량 이후 과금된다. (한달에 500MB 스토리지와 실행시간 2,000분)

2. workflow의 주요 구성

Github에게 YAML파일로 정의한 자동화 동작을 전달하면, Github Actions는 해당 파일을 기반으로 그대로 실행

  • Job 그룹의 역할로, 단일 가상 환경을 제공
  • Step Job안에서 순차적으로 실행되는 프로세스 단위
    • 파일 시스템을 통해 서로 정보를 공유, 교환 가능
    • step에서 명령을 내리거나, action을 실행
  • Github Marketplace에서 공유되고, marketplace에 공유된 action은 yaml 파일에서 곧바로 사용 가능
    • cron과 같이 시간에 따라 작업을 실행하게 가능
    • git push / pull-request 등의 GIthub Repository 이벤트를 기준으로 실행하게 가능

ex. action.yml

yml파일이므로 들여쓰기 주의하기!

name: #work flow 이름 명시
on: [push] #workflow event 명시 
  # cron 문법으로 시간 설정 or push / pull-request 시 동작하도록 설정

jobs: ## job 들을 명시
  build: ## job id
    runs-on: ubuntu-latest ## 해당 job의 구동 환경을 정의
    strategy: #build matrix 설정 
      matrix:
        node-version: [8.x, 10.x, 12.x] #다른 환경들을 명시해서 같은 jobs를 동시에 실행할 수 있도록 함
    steps: #해당 jobs이 갖는 순차적인 동작 나열
    - uses: actions/checkout@v1 #해당 steps에서 사용할 action 선택
    - name: Use Node.js ${{ matrix.node-version }} #step 이름 명시
      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

Heroku

1. Heroku ?!

  • 클라우드 컴퓨팅 플랫폼 서비스 (PaaS)
  • CI/CD(소스코드빌드, 앱배포) 수행
  • Heroku가 공식 지원하는 DB는 PostgreSQL (이외 DB는 유료 계정만 가능)
  • 카드 등록 없이 한 달 55시간 무료!
  • 카드 등록 시 한 달 1000시간 무료
  • 무료 계정의 경우, 하루에 깨어있는 시간 최대가 16시간 (유료 계정은 깨어있음)
  • 30분간 서비스 트래픽이 없다면 sleep 모드에 들어감
  • sleep 모드에 들어간 후 다시 wake up 될 때 응답시간이 느림 (wake up 상태면 빠름)

참고자료

Clone this wiki locally