-
Notifications
You must be signed in to change notification settings - Fork 2
Git action과 Heroku를 이용하여 CI CD
hyejung kim edited this page Sep 14, 2021
·
1 revision
Github 저장소를 기반으로 소프트웨어 개발 workflow를 자동화 할 수 있는 도구! (Github에서 제공하는 CI)
- Github 저장소에서 등록 시 사용하는 기술에 맞는 workflow 템플릿 이용 가능
- workflow는 저장소마다 최대 20개까지 등록 가능
- workflow내 job이라는 단계마다 최대 6시간 동안 실행될 수 있고, 초과하게 되면 자동으로 중지
- public 계정의 경우 무료이고, private 계정은 무료 사용량 이후 과금된다. (한달에 500MB 스토리지와 실행시간 2,000분)
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
- 클라우드 컴퓨팅 플랫폼 서비스 (PaaS)
- CI/CD(소스코드빌드, 앱배포) 수행
- Heroku가 공식 지원하는 DB는 PostgreSQL (이외 DB는 유료 계정만 가능)
- 카드 등록 없이 한 달 55시간 무료!
- 카드 등록 시 한 달 1000시간 무료
- 무료 계정의 경우, 하루에 깨어있는 시간 최대가 16시간 (유료 계정은 깨어있음)
- 30분간 서비스 트래픽이 없다면 sleep 모드에 들어감
- sleep 모드에 들어간 후 다시 wake up 될 때 응답시간이 느림 (wake up 상태면 빠름)