개요
Github Action은 Github 저장소를 기반으로 소프트웨어 개발 Workflow를 자동화 할 수 있는 도구이다. 간단하게 말하자면 Github에서 직접 제공하는 CI/CD 도구.
Workflow는 Github 저장소에서 발생하는 build, test, package, release, deploy 등 다양한 이벤트를 기반으로 직접 원하는 Workflow를 만들 수 있다.
Workflow는 Runners라고 불리는 Github에서 호스팅 하는 Linux, macOS, Windows 환경에서 실행된다. 그리고 이 Runners를 사용자가 직접 호스팅하는 환경에서 직접 구동시킬 수도 있다.(self-hosted runner)
Github 마켓 플레이스에는 여러 사람이 공유한 Workflow는 찾을 수 있으며, 자신이 직접 만들어서 공유할 수도 있다.
주요 Components
Example)
name: Linters
on:
pull_request:
push:
branches:
- master
jobs:
flake8_py3:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.8.6
- run: python -m pip install flake8
- name: flake8
uses: liskin/gh-problem-matcher-wrap@v1
with:
linters: flake8
run: flake8
1) Workflow
- 어떤 자동화된 동작의 최상위 개념
- 여러 job으로 구성되고, Event에 의해 트리거될 수 있음.
- workflow 파일은 yaml 파일로 작성되고, project 최상단에 .github/workflows 디렉토리 아래에 위치함.
2) Event
- Workflow를 Trigger(실행)하는 특정 활동이나 규칙
- 예를 들어 다음과 같은 상황을 사용할 수 있음
- 특정 브랜치로 Push하거나
- 특정 브랜치로 Pull Request하거나
- 특정 시간대에 반복(Cron)
- Webhook을 사용해 외부 이벤트를 통해 실행
- check here
3) Job
- Job은 여러 Step으로 구성되고, 가상 환경의 인스턴스에서 실행됨.
- 다른 Job에 의존 관계를 가질 수 있고, 독립적으로 병렬 실행도 가능함.
4) Step
- Task들의 집합으로, 커맨드를 날리거나 action을 실행할 수 있음
5) Action
- Workflow의 가장 작은 블럭(smallest portable building block)
- Job을 만들기 위해 Step들을 연결할 수 있음
- 재사용이 가능한 컴포넌트
- 개인적으로 만든 Action을 사용할 수도 있고, Marketplace에 있는 공용 Action을 사용할 수도 있음
6) Runner
- Gitbub Action Runner 어플리케이션이 설치된 머신으로, Workflow가 실행될 인스턴스
- Github에서 호스팅해주는 Github-hosted runner와 직접 호스팅하는 Self-hosted runner로 나뉨
- Github-hosted runner는 Azure의 Standard_DS2_v2로 vCPU 2, 메모리 7GB, 임시 스토리지 14GB
Reference
https://jonnung.dev/devops/2020/01/31/github_action_getting_started/
https://zzsza.github.io/development/2020/06/06/github-action/
반응형
'Computer Engineering > Tool' 카테고리의 다른 글
iTerm2설치 및 설정 그리고 주요 단축키 (0) | 2024.04.06 |
---|