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