Production 서버에 최대한 장애가 발생하지 않기 위함
여러 단계로 나눠 실험을 함으로써 에러 발생 확률을 줄이기 위함
Continuous Integration(지속적 통합)
새롭게 작성한 코드 변경 사항이 Build, Test 된 이후 Test Case에 통과하는지 여부 확인
지속적으로 코드 품질 관리
개발자 각각의 결과물에 대해 모두 CI 과정이 수행되어야 함
빌드 / 테스트 자동화
Continuous Deploy/Delivery(지속적 배포)
작성한 코드가 신뢰 가능한 상태라면 자동으로 배포 될 수 있도록 하는 과정
Dev/Staging/Main Branch에 Merge가 될 경우 코드가 자동으로 (매치된) 서버에 배포하게 만듦
배포 자동화
Travis CI / AWS CodeDeploy : 이전 웹 개발에서 활용한 툴
Jenkins : 최근 많이 활용하는 CI 툴
Github Action : 이번에 활용할 CI Tool
Test Code
배포
Python, Shell Script 실행
Github Tag, Release 자동 설정
하나의 Github Repository당 Workflow는 최대 20개까지 등록 가능
Workflow에 존재하는 Job은 최대 6시간 실행할 수 있음
동시에 실행할 수 있는 Job 개수 제한 존재
코드 작업
Github Action으로 무엇을 할 것인지 생각
사용할 Workflow 정의
Worfklow의 정상 작동 확인
여러 Job으로 구성된 Process
특정 Event를 Trigger로써 수행되는 작업 내용물 모두를 저장한 Process
Github Action의 최상위 개념
YAML 파일로 작성되어 Github Repository의 .github/workflows 폴더에 저장함
Event가 발생하였을 때 자동으로 수행하고 싶은 내용을 설정한 파일
Runner에서 실행되는 Steps의 조합
Job이 여러 개 있을 경우 병렬로 실행될 수 있고, 순차적으로 실행될 수도 있음
Workflow에서 수행할 내용들만 입력된 공간
수행할 내용 1개에 대한 정보를 Step, 이러한 Step을 모두 모은 것을 Job이라고 함
Job에서 실행되는 개별 작업
Action을 실행하거나 Shell Command를 실행
하나의 Job에서는 데이터를 공유할 수 있음
Workflow 중 제일 작은 단위
Job을 생성하기 위해 여러 Step을 묶은 개념
재사용이 가능한 Component
Actoin을 만들 수도 있고, Marketplace에서 미리 구현된 Action을 가져와 활용할 수도 있음
Workflow가 실행될 서버
Github-hosted Runner : Github Action의 서버를 활용하는 방법
Self-hosted Runner : 직접 서버를 호스팅해서 활용하는 방법
on : Event
jobs
runs-on
uses : 사용할 Github Action
name : Step의 이름
run : 내가 직접 설정한 Shell Command
3-2에서 설명했던 것을 토대로, 내가 CI 과정을 수행하고 싶은 파일(예시에선 hello-world.py 파일)을 수행하려는 코드를 넣어줘야 한다.
그렇다면 어디에 넣어야 할까?
먼저 python hello-world.py를 통해 Python 파일을 수행시켜야 할 것이다.
이 명령어는 Shell Command이다.
그렇다면...? 그렇다. jobs의 steps 밑에 name, run을 생성해주어 위 Shell Command를 입력해주면 된다.
Main Branch에 커밋하면 now 왼쪽에 노란색 동그라미가 발생하는데, 동그라미를 클릭하면 위 사진과 같은 창이 발생
CI 과정이 수행되고 있음을 알림
초록색 버튼 : CI가 성공함
CI 과정에서 어떤 name을 가진 Job이 실행되었는지 볼 수 있음
내가 위에서 설정했던 "Test hello-world.py"도 아래에서 4번째에 존재함을 볼 수 있음
왼쪽 '>'를 클릭하여 해당 과정에서 어떤 작업이 수행되었는지 볼 수도 있음