2023. 10. 10. 15:24ㆍGithub
Continuous Integration (CI):
CI는 개발자들이 코드를 통합하는 과정을 자동화합니다. 이는 주로 git 환경에서의 브랜치 병합 및 테스트 자동화에 초점을 맞춥니다. 개발자는 기능을 구현하고, 해당 기능의 브랜치에 커밋한 뒤, 자동화된 테스트를 거쳐 메인 브랜치에 병합됩니다.
- 검색 기능을 작업할 feature branch인 feature/search 브랜치를 생성한다.
- 검색 기능을 구현 한 후 feature/search 브랜치에 커밋한다.
- 문제가 없는지 확인하기 위해 (빌드 후) unit test를 실행한다.
- Unit test가 문제 없이 모두 통과하면 (PR 리뷰를 거친 후) develop 브랜치에 merge한다.
- Develop 브랜치에 merge 된 후 develop 브랜치에서 다시 unit test를 실행하여 develop 브랜치에 merge후 버그나 이상이 없음을 확인 한다.
Continuous Deployment (CD): CD는 CI의 다음 단계로, 자동화된 테스트를 통과한 코드를 자동으로 배포합니다. 스테이징 서버에서의 배포, 다양한 테스트 수행, 그리고 프로덕션 서버로의 배포가 이 과정에 포함됩니다.
- Staging 서버에서 최신 코드를 배포한다.
- Staging 서버에서 다음과 같은 다양한 테스트를 실행하여 production에 배포가 될 수 있을지를 판단한다:
- Integration Test
- E2E(End-To-End) Test
- 그 외 Load Test등 필요한 테스트들
Continuous Delivery: Continuous Delivery는 Continuous Deployment와 유사하나, 프로덕션 서버에 배포하기 전에 사람의 승인이 필요합니다. 많은 회사들이 프로덕션 배포 전에 추가적인 수동 테스트를 거치도록 CICD 시스템을 설정합니다.
CICD Workflow
- 새로운 코드를 추가 후 커밋과 push를 한다.
- Github에서 새로운 push 받으면 자동으로 Github Action을 실행시킨다.
- 만일 develop 브랜치에 push 되었다면 CICD pipeline을 실행시킨다. Develop 브랜치가 아니라면 종료한다.
- 먼저 새로운 코드를 checkout 한다.
- 그 후 빌드 후 Unit Test를 실행 시킨다.
- Unit Test가 전부 통과하면 docker image를 빌드한다.
- Docker image가 성공적으로 빌드 되면 dockerhub에 푸쉬한다.
github Action으로 CICD 구축하기
github에 Action에 들어가 자기에 맞는 언어를 선택하면 됩니다
이제 화면에서 github action 설정 파일 수정을 할 수 있는 화면이 나옵니다. 오른쪽 사이드바에는 자세한 안내 문서도 나와 있습니다. 다음과 같이 파일을 수정합니다:
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
name: build and test
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
docker-push:
name: docker build and push
needs: build
runs-on: ubuntu-latest
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
push: true
tags: mydockerhub/github-action-test:latest
Dockerhub에 push하기 위해서는 먼저 dockerhub에 로그인이 필요합니다. 그리고 로그인을 하기 위해서는 dockerhub의 아이디와 비밀번호가 필요 하겠죠? 위 부분의 secrets.DOCKERHUB_USERNAME 과 secrets.DOCKERHUB_TOKEN 는 Github의 Secrets 설정 페이지에 미리 추가해놓아야 사용할 수 있습니다.
Github Action 설정이 끝났으면 이제 드디어 실제 실행을 시켜볼 차례 입니다. main 브랜치에 push나 PR을 하면 Github Action workflow가 자동으로 실행되는 것을 Action 탭에서 볼 수 있습니다.
'Github' 카테고리의 다른 글
Git과 GitHub 기본 안내 (1) | 2023.10.15 |
---|---|
merge & rebase (0) | 2023.10.10 |