Github Actions 알아보기

yujuck·2024년 1월 12일
0

CI CD 구축하기

목록 보기
3/6
post-thumbnail
post-custom-banner

docker로 프로젝트를 실행시킬 수 있도록 해놨으니 다음 단계는 작업 내용을 푸시하면 서버에 배포해서 적용될 수 있도록 해야한다. 이를 위해서 Github Actions를 사용할 예정이다

Github Actions

빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포(CI/CD) 플랫폼

Github Actions는 Github에서 제공하는 CI/CD 플랫폼으로, Github 리포지토리에서 CI/CD 결과를 확인하고 관리 할 수 있다. 특정 이벤트가 발생하면 실행시킬 작업을 지정할 수 있는데, 코드의 push 이벤트 외에도 PR이 merge 되거나 새로운 issue가 등록되거나 하는 여러 이벤트에 대해서도 실행시킬 작업을 등록할 수 있다.

사용하기 위한 주요 키워드는 Workflows, Jobs, Actions, Runners가 있다.

Workflows

Github Actions에서 가장 상위의 개념은 Workflow다.
하나 이상의 작업을 실행하는 구성 가능한 자동화된 프로세스로, YAML 파일로 정의하면 되고 하나의 리포지토리에 여러개 등록 가능하고 각각의 workflow 내에서 다른 workflow를 참조할 수도 있다.

.github/workflows 폴더 아래에 원하는 파일명으로 YAML 파일로 등록하면 되고 다음과 같이 작성할 수 있다.

# optional. 생략하면 파일 이름으로 workflow 이름이 만들어짐
name: <workflow 이름> 

# workflow가 언제 실행될지 지정. 다음처럼 설정하게 되면 dev 브랜치에 push 될 때 실행됨
on:
	push:
		branches:
			- dev

jobs:
	.
	.
	.

Workflow에 대한 상세 정보는 공식문서를 참고하면 된다.

Jobs

Workflow가 실행되면 수행할 일들을 정의한 것이 jobs다. 하나의 workflow에 여러개의 job을 실행시킬 수 있다. 각각의 job은 다른 job과 별개의 환경에서 실행이 된다. job 끼리도 종속성을 가질 수 있는데, 하나의 job이 다른 job에 종속되면 그 job이 완료될 때까지 기다렸다가 실행된다.

job을 정의할 때 필수로 정의해야하는건 runs-onsteps다.

  • runs-on : job을 실행할 환경(runner)
  • steps : 순차적으로 실행시킬 스크립트 및 액션.
jobs:
	build:
		runs-on: ubuntu-latest / self-hosted / ..
		steps:
			.
			.

step은 순차적으로 실행이 되기 때문에 각 단계에서 다른 단계의 데이터를 공유하게 된다. 예를 들어 빌드한 다음에 테스트를 진행하고 싶다면 steps에 빌드 -> 테스트 순서대로 작성을 하면 된다.
스크립트 또는 액션을 적을 수 있다 했는데, 스크립트를 사용할 때는 run, 액션은 uses 라는 속성을 사용해 지정할 수 있다.

steps:
	- name: checkout  # 각 단계마다 이름도 지정할 수 있음
	  uses: actions/checkout@v4

	- name: yarn install
	  run: yarn install
	  
	- run: yarn build
	
	# 한번에 여러개 실행 가능
	- name: test and start
	  run: |
		yarn test
		yarn start
  

Jobs에 대한 상세정보는 공식문서 참고하기

Actions

action은 자주 반복되어 수행되는 작업을 재사용하기 쉽게 만들어놓은 Github Actions 플랫폼용 사용자 정의 애플리케이션이다. action을 직접 만들 수도 있고, Github Marketplace에서 찾아 사용할 수도 있다.

위에 steps 예제에서 사용한 actions/checkout@v4 이라는 action은 Github에서 제공하는 action으로 리포지토리 코드를 runner가 실행되고 있는 서버로 내려받는 작업을 수행하는 action이라고 보면 된다. (checkout action 공식문서)

Runners

runner는 workflow를 실행하는 서버다. Github에서 기본적으로 Ubuntu Linux, Microsoft Windows, macOS 를 runner로 사용할 수 있게 제공해주고 있다. pbulic 리포지토리의 경우에는 무료로 사용할 수 있는데 private 리포지토리는 사용하고 있는 plan에 따라 제공되는 무료 시간 및 스토리지를 다 사용하고 나면 비용이 발생한다.

public이 아닌 private일 때도 무료로 사용하려면 self-hosted runner를 만들어 사용하면 된다. 이번에 개발서버 배포를 위해 일단 비용이 발생하지 않도록 개발 서버 자체를 runner로 만들었다.

Next

한번에 쓰려고 했는데 내용이 좀 길어질 것 같아서 일단 이번엔 Github Actions에 관한 설명에 대해서만 작성해보았다. 다음에는 실제로 workflow를 실행시키기 위한 설정과 yaml 파일 생성에 대해 작성해보자!

profile
알게 된 내용 부담 없이 남기기
post-custom-banner

0개의 댓글