2023년 4월 16일 일요일

github action 란 무엇인가? (기초)

 github action

git에 소스를 올리는 사람이라면, github 메뉴중에 github action 이라는 메뉴를 보았을 것입니다.

메뉴 이름을 봤을 때 대충 예상되는 동작이지만 간략하게 정리해봤습니다.


기능

github에 소스 반영시 어떤 동작(build, test, deploy 등)을 할 수 있도록 해줍니다.

일종의 코드 commit hook 같은 기능으로 생각하면 됩니다.

코드 반영시에만 동작이 되는것은 아니고 여러가지 event를 설정 할 수 가 있습니다.


준비물

github action은 서버를 필요로 합니다. 

github에서 제공해주는 서버를 사용하는 방법과 self host PC 를 이용하는 두가지 방법이 있으며, github 서버는 비용이 들게 됩니다.

스크립트 내에 runs-on 부분에 해당 정보를 기록 하게 되는데 다음 링크를 참고하면 됩니다.

https://docs.github.com/ko/actions/using-github-hosted-runners/about-github-hosted-runners

github 등급 정책에 따라 일부 무료로 사용하는 구간이 있습니다.

현재는 GitHub Free인 경우 500MB에 2000분 무료입니다.

github action을 사용해보면 한번 동작할때 시간 정보가 찍히게 되는데 해당 시간이 누적되어 정해진 시간을 초과하면 비용을 내는 방식 입니다. 여기에 비용 배율이 있는데 윈도우는 2, Mac 은 10을 곱해줍니다. 아무래도 보유한 운영체제 서버의 비용 때문이지 않나 하는 생각이 듭니다. 즉 linux를 사용하면 2000분 무료가 되지만 윈도우를 사용했을때 1000분 무료가 됩니다.

Included storage and minutes

Note: Entitlement minutes cannot be used for Windows and Ubuntu runners over 2-cores. These runners will always be charged for, including in public repos. For more information, see "About billing for GitHub Actions."

ProductStorageMinutes (per month)
GitHub Free500 MB2,000
GitHub Pro1 GB3,000
GitHub Free for organizations500 MB2,000
GitHub Team2 GB3,000
GitHub Enterprise Cloud50 GB50,000

Jobs that run on Windows and macOS runners that GitHub hosts consume minutes at 2 and 10 times the rate that jobs on Linux runners consume. For example, using 1,000 Windows minutes would consume 2,000 of the minutes included in your account. Using 1,000 macOS minutes, would consume 10,000 minutes included in your account.

Minute multipliers

Operating systemMinute multiplier
Linux1
Windows2
macOS10

셀프 호스트는 설정의 Runner 에서 설정하는 부분이 있습니다. 


 self host를 사용하게 되면 PC를 계속 켜놔야 합니다. 원리는 특정 SW를 설치하고 접속하면 github에서 내려오는 명령을 수행하는 방식입니다.


간단 사용법

Action 을 선택하고 아래쪽에 있는 적당한 configure 버튼을 누르면 해당 내용을 바탕으로 yaml 파일이 하나 만들어 집니다.


yaml 파일명은 중요하지 않고, 안에 있는 스크립트 내용이 중요합니다. 오른쪽에 간단 설명이 있으니 보고 편집을 하면 됩니다.

최종적으로 submit 하지 않으면 적용이 되지 않습니다.


yaml 내용은 event(on) 조건과 jobs(해야하는 동작들)에 대해서 구성합니다.






댓글 없음:

댓글 쓰기