Devops/Devops

[Devops] Github Action란?

ellapk 2024. 10. 13. 20:29

 

Github Actions는 CI(지속 통합), CD(지속 배포)를 위한 서비스이다.

깃허브 액션은 크게 Events, workflows, jobs, actions, runners 5가지 개념으로 알 수 있다. 특정 이벤트가 발생했을 때 내가 원하는 일을 자동으로 수행할 수 있도록 만들어준다.

Events

  • 깃허브에서 발생하는 대부분의 행위를 이벤트로 지정할 수 있다.

ex)나의 PR을 메인 브런치로 머지할 때 어떤 테스트를 수행해야 한다면 그 이벤트를 지정해줄 수도 있고, 커밋 후 푸시를 할 때 이벤트를 지정할 수도 있다.

Workflows

  • 특정 이벤트가 발생했을 때 내가 어떤 일을 수행할 지 명시하는 것
  • .github/workflows 폴더 아래에 있는 YAML 파일로 설정하며, 하나의 레파지토리엔 여러 개의 워크 플로우, YAML 파일을 생성할 수 있다.
// .github/workflows/exmaple.yml

on:
	push:
		branches: [main]
// main 브랜치에 push 이벤트가 발생할 때마다 워크 플로우를 실행한다.
	schedule:
		cron:"0 0 * * * "
// 매일 자정에 워크 플로우를 실행한다	
		

Jobs

  • 독립된 가상 머신 or 컨테이너에서 돌아가는 하나의 처리 단위
  • 작업은 yaml 파일 내에서 jobs 속성을 통해 작업 식별자(ID)와 작업 세부 내용 간의 맵핑 형태로 명시된다.
jobs:
	job1:
	// job1에 대한 세부 내용
		runs-on: ubuntu-latest
	//runs-on 속성 (필수)를 통해 해당 리눅스나 윈도우즈 등 실행 환경 지정	
		steps:
			- uses: actions/checkout@v3
			- run: npm install
			- run: npm test
	//steps 속성을 통해 작업 순서를 정의
	job2:
	// job2에 대한 세부 내용

Actions

  • 깃허브 액션에는 재사용할 수 있는 공개적으로 오픈된 많은 액션들이 있다.
  • 라이브러리에 많기 때문에 잘 갖다 쓸 수 있다는 이점

Runners

  • 잡을 실행하는 것이 러너이다. 러너는 vm머신 또는 docker 컨테이너라고 보면 된다.
  • 각각의 잡들은 개별적이고 독립적인 러너라는 컨테이너에서 실행된다고 볼 수 있다.

Github Action 예제

.github/workflows/workflow.yml

깃허브 액션을 사용하기 위해서 프로젝트 안 → 깃허브 폴더 안 → 워크 플로우 폴더를 생성하고 원하는 yml 파일을 만든다

//workflow.yml 샘플

name : learn-github-actions
on: [push]
jobs:
	check-bats-version
	runs-on: ubuntu-latest
	steps:
		- uses: actions/checkout@v3
		- uses: actions/setup-node@v3
			with:
				node-version:'14'
		- run : npm install -bats
		- run : bats -v