깃허브를 사용하다 어느순간... 내 레포에 새로운 탭
이 생긴 것을 여러분은 인지하셨나요?
자꾸 자기를 클릭해달라고 팝업도 뜨던데...
구글에 검색해보니 CI/CD관련된 기능인거같은데...?
레퍼런스좀 찾아볼까?
하고 찾았지만 국내 자료는 아직 정말 정말 미비하더군요 ㅠ
새로운 프로젝트를 시작하면서 action이라는 새로운 기능을 알게되어 기존의 travis 대신 github action을 사용해보기로 하였습니다.
앞으로 시리즈를 통해 이 간단한 세가지 기능을 github Action
으로 구현해보도록 하겠습니다.
깃허브 저장소 내에서 코드 프로젝트를 빌드
, 테스트
, 패키지
, 릴리스
또는 배포
하기 위해 설정할 수있는 사용자 지정 자동화 프로세스이다. 추가적인 ci/cd툴을 사용하지 않고 깃허브 하나로 버전관리부터 테스트 배포까지 가능한 점이 장점이라고 생각한다.
코드를 푸시하면 npm에 패키지를 배포하거나 Docker Hub에 이미지를 배포하거나 AWS, GCP, netlify에 서비스를 배포하는 작업을 GitHub에서 바로 할 수 있다.
.
Github Action에는 크게 4가지의 주요 개념이 있다. 이들의 관계와 흐름을 이해해야만 각종 조건과 그에 따른 액션을 스스로 정의할 수 있다.
아래의 그림을 잘 살펴보면서 설명을 읽어보자!
프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포하기 위한 전체적인 프로세스입니다. 워크플로우는 여러 개의 Job
으로 구성되며 event
(on)에 의해 실행됩니다. GitHub에게 나만의 동작을 정의한 workflow file를 만들어 전달하면 GitHub Actions이 그것을 보고 그대로 실행 시켜줍니다.
Job은 하나의 인스턴스(리눅스, 맥, 윈도우 등등)에서 여러 Step을 그룹시켜 실행하는 역할을 한다.
jobs:
하위에 여러개의 job을 선언할 수 있고 기본적으로 job들은 병렬로 실행이 된다.
Step은 순차적으로 명령어를 수행합니다. 크게 Uses와 Run으로 작업 단위가 나뉘는데, Uses는 이미 다른 사람들이 정의한 명령어를 가져와 실행하는 것이고, Run은 npm install
나 mkdir example
과 같이 가상환경 내에서 실행할 수 있는 스크립트를 말합니다.
워크플로우를 실행시키는 조건을 설정합니다. 예를 들어 해당 레포지토리에 Code가 push 됐을때만, 또는 풀리퀘했을 때, 또는 master branch에 변경사항이 있었을 때 등으로 조건을 줄 수 있습니다. 물론 cron 처럼 주기적으로 스케쥴링하는 방법 또한 지원합니다.