CI/CD 애플리케이션 구축, 테스트 및 배포에 자동화는 안정적인 서비스 운영과 개발팀 팀간 격차 해소와 운영에 도움을 준다. CI/CD 를 가능하게 하는 도구들은 Travis, Bitrise, Jenkins 등 여러가지가 있지만 Github 에서 제공하는 Github Actions 를 사용해 보자.
버전관리를 위해서 보통 Github 을 사용하게 되는데 CI/CD 를 하기 위해서 Travis, Jenkins 등 도구를 추가하고 연동하는 작업이 필요했다. Github Actions 가 나오면서 추가 연동 작업 없이 Github 한곳에서 버전관리와 배포 자동화가 가능하다.
Github Actions
Github Actions는 러너(Runners)위에서 실행이 되고, 러너는 가상 머신 위에서 실행이 된다. 주요 OS(Linux, macOS, Windows)에 호스팅 된 러너를 사용하면 쉽게 빌드하고 테스트 할 수 있다. 여러개의 운영체제에서 동시에 테스트 워크 플로우 작성도 가능하며 Node.js, Python, Java, Ruby, Go, Rust 등 주요 모든 언어를 지원한다.
Pay-as-you-go Pricing
Workflow
워크플로우는 프로젝트 .github/workflow 폴더 아래 .yml 파일로 작성하고, 하나 이상의 Job 이 필요하며 실행을 위한 Event 가 필요하다.
- Job - 실행하고자 하는 여러개의 Step 을 정의 하는 곳으로 가상 환경의 인스턴스에서 실행 된다.
- Step - Task의 집합으로 간단한 커맨드(CMD)를 실행하거나 github marketplace에 공유된 Action을 사용 할수 있다.
- Event - 워크플로우를 실행하게 하는 트리거(trigger)이다. 이벤트는 지정한 브런치에서 push, pull request 가 일어날 때, 웹훅(webhook)을 사용하거나, 특정 시간대에 실행하게 할 수 있다.
Example
// .ymlname: Deploymenton:
push:
branches: [ main ]jobs:
build:
name: Build & Deploy runs-on: ubuntu-latest steps:
- uses: actions/checkout@v2 - name: Setup Node
uses: actions/setup-node@v2.1.2
with:
node-version: '14.x' - name: Package Module Installation
run: yarn install - name: Test
run: yarn test - name: Build
run: yarn build
위 예제 워크플로우는 main 브런치에서 push 가 발생 하였을 때 Job 을 실행 하고, 리눅스 러너 위에서 node 설정, yarn 패키지 모듈 설치, 테스트, 빌드 하는 간단한 과정이다.
워크플로우 로그 및 결과는 Actions 에서 확인 할 수 있고, Step 단계별로 진행 시간 확인도 가능하다. 시간지연이 높은 단계가 있다면 최적화를 해 보는 것이 좋겠다.
Workflow template
워크플로우를 직접 설정해도 되지만 제공되는 템플릿을 활용해서 필요한 내용을 추가 하는 것도 방법이다.
Marketplace
워크플로우 Job > Step 에서 필요한 내용은 마켓에서 도움을 얻을 수 있다. 필요한 내용을 검색해 보면 예제 코드를 통해 쉽게 사용 할수 있도록 되어 있다.
Marketplace Actions 타입으로 검색