Code
- Build
- Test
단계Code
: 개발자가 코드를 원격 코드 저장소에 pushBuild
: 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드Test
: 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는 지 확인원격 저장소에 push ➡ 테스트 및 빌드 ➡ 통합 테스트 ➡ 개선 방안 검토
위의 지속적 통합을 통해
- 각자 개발한 코드를 이른 시점에 확인
- 버그를 일찍 발견
- 테스트가 완료된 코드에 대해 빠른 전달이 가능해지며 지속적인 배포가 가능
Release
- Deploy
- Operate
단계에서 꾀할 수 있습니다.Release
: 배포 가능한 소프트웨어 패키지를 작성Deploy
: 프로비저닝을 실행하고 서비스를 사용자에게 노출 (실질적인 배포)Operate
: 서비스 현황을 파악하고 생길 수 있는 문제 감지
- 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계
- 테스트 자동화와 코드 배포 자동화가 포함
- 프로덕션 준비가 완료된 빌드를 코드 리포지토리에 자동으로 배포
- 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약
- 휴먼 에러(Human Error)를 방지
원격 저장소에 push ➡ 빌드 및 테스트, 릴리즈 ➡ 배포서버 ➡ 배포 ➡ 애플리케이션 서버
Source
단계: 원격 저장소의 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달
Build
단계: 전달받은 코드를 컴파일, 빌드, 테스트하여 가공하고 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달
Deploy
단계: 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행
파이프라인의 단계는 필요에 따라 더 세분화되거나 간소화될 수 있으며, 소개하는 업체마다 용어가 상이할 수 있음
워크플로는 .yml (혹은 .yaml ) 파일에 의해 구성되며, 테스트, 배포 등 기능에 따라 여러개의 워크플로도 만들 수 있습니다. 생성된 워크플로는 .github/workflows
워크플로에 담길 .yml의 양식은 아래 예시와 같이 작성할 수 있다.
.github/workflows
name: 워크플로 이름
# 언제 job을 작동시킬지
on: [push, pull_request]
# 어떤 job을 할지
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 스텝 명
uses: actions/setup-node@v1
with:
node-version: '16'
- run: npm install
- run: npm test
작업할 레포지토리의 Actions 탭에 가면 다음과 같이 Github Actions가 실행된 것을 볼 수 있다.