실제 서비스를 배포하기전에 지속적으로 통합(code merge, 빌드, 테스트)하는 건 중요하다. 배포하는 과정에서 문제가 생기면 해결하기 힘들기 때문이다.
지금까지 로컬개발완료시 (나, 팀원)
- git push
- merge
- 배포
- 기능 동작 test / 시뮬레이션
작업을 전부 수동으로 해왔다. 이걸 자동화하려면 ??
CI & CD
소프트웨어를 사용자(클라이언트)에게 신속하고 안정적으로 코드를 배포하기 위해 자동으로 소프트웨어를 빌드, 테스트, 배포하는 개념이다.
성공적으로 CI/CD 환경을 구축한다면, 코드의 새로운 변경사항이 자동으로 빌드/테스트/배포 되면서 여러명의 개발자가 동시에 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
CI(Continuous Integration) : 지속적인 통합
개발자를 위한 자동화 프로세스라고 볼 수 있으며, Code - Build - Test 단계에서 이 프로세스를 수행할 수 있음.
- Code : 개발자가 코드를 원격 코드 저장소에 push 하는 단계
- Build : 원격 코드 저장소로부터 코드를 가져와 컴파일, 빌드 하는 단계
- Test : 단위 테스트를 수행했을 때 실패하는 케이스가 없는지 수행하는 단계. 보통 빌드 과정에서 함께 자동으로 테스트 코드를 실행함.
이런 지속적인 통합(CI) 과정을 통해 개발자는 버그를 일찍 발견할 수 있고, 테스트가 완료된 코드에 대해 빠른 전달이 가능해지며 지속적인 배포가 가능해짐.
소프트웨어 배포 (릴리즈)
소프트웨어를 고객이 사용할 수 있도록 제공해주는 것.
1. 개발자 코드 작업
2. 소프트웨어 테스트 및 기능 검증
3. 소프트웨어 배포
CD(Continuous Deployment/Delivery) : 지속적인 배포, 지속적인 서비스 제공
소프트웨어 개발이 끝난 후 가능한 빠르게 고객에게 배포하는 과정을 자동화하고 간소화하는 것을 목표로 한다.
-> 배포 자동화 : 명령어 혹은 한번의 클릭을 통해 전체 배포 과정을 자동으로 진행하는 것
GitHub Actions : 깃허브에서 제공해주는 자동화 서비스. 공식 CI/CD 툴
특정 이벤트가 발생했을 때 개발자가 정의해놓은 workflow를 자동으로 실행시켜준다. 이런 흐름을 이용하여 개발자는 GitHub Actions를 사용해서 CI/CD 환경을 구축할 수 있다.
ex) git push 이벤트 발생시 gradle build를 실행하도록 GitHub Actions에서 workflow로 지정해주면 지속적인 통합(빌드)을 구축할 수 있다.
GitHub Actions의 핵심 개념
Workflow : Github Actions에서 자동화된 전체 프로세스를 의미함. 하나 이상의 Job으로 구성되고, Event에 의해 예약되거나 트리거될 수 있는 자동화된 절차임. Github에게 YAML 파일로 정의한 자동화 동작을 전달하면 Github Actions는 해당 파일을 기반으로 그대로 실행시킴.
- Event : Workflow를 실행하는 특정 Action, 트리거, 규칙을 의미함.
ex) 누군가가 레포지토리에 코드를 push하거나 pull requst 했을 때 Github에서 Workflow가 실행될 수 있음.
- Job : Job은 여러 Step으로 구성됨. GitHub Actions에서 job은 작업 단위를 말함. 하나의 작업은 주어진 작업을 완료하기 위해 수행되는 단일 프로세스임. Workflow 파일에 정의된 여러 작업이 순차적 또는 병렬로 실행될 수 있음.
- Step : Job 안에서 순차적으로 실행되는 프로세스 단위임. Step에서는 명령을 내리거나, Action을 실행할 수 있음.
- Action : 재사용 가능한 workflow 구성요소임. GitHub Marketplace에서 제공되며, 커뮤니티나 개인이 만든 수많은 Action이 있음. 오픈 소스 느낌. 이러한 Action들은 GitHub Actions 워크플로우를 효율적으로 구성하고 자동화하는데 도움이 됨.
- Runner : GitHub Action Runner 애플리케이션이 설치된 머신. Workflow가 실행될 인스턴스를 Runner라고 함.
GitHub Actions 생성해보기 (Quick Start)
GitHub 빌드 및 테스트 자동화해보기
GitHub Actions 활용 - AWS CodeDeploy 연동
'Git.Github' 카테고리의 다른 글
[GitHub] GitHub 기초 (2) | 2024.01.03 |
---|