hyperskill - Introduction to GitHub actions
GitHub actions (깃허브 액션) 은,
우리의 repo 안에서 바로 소프트웨어 개발 워크플로우를 자동화, 사용자화, 실행 하게 해 줍니다.
이러한 워크플로우는 특정 이벤트가 일어났을 때 자동으로 실행하는 태스크 혹은 액션으로 구성되어 있습니다.
이는 CI/CD 능력과 다른 많은 기능들을 repository에 직접 포함할 수 있게 해 줍니다.
Components of GitHub Actions - 깃헙 액션의 컴포넌트
flowchart LR
subgraph Event
direction LR
Push
Pull
Issues
External["External\nEvents"]
end
subgraph WorkFlow
subgraph Job1
Step1-1["Step 1\n (Action)"]
Step1-2["Step 2\n (Action)"]
Step1-3["Step 3\n (Action)"]
end
subgraph Job2
Step2-1["Step 1\n (Action)"]
Step2-2["Step 2\n (Action)"]
Step2-3["Step 3\n (Action)"]
end
end
Event --> WorkFlow --> Runner("Each Runner\n (Job1, Job2)")
GitHub actions 는 이벤트에 의해 주도되는 패러다임이며,
특정한 이벤트가 발생 한 이후에 일련의 명령들을 실행 할 수 있다는 것을 의미합니다.
우리는 GitHub actions 에서 여러개의 workflow 와 job 을 생성 할 수 있습니다.
위 그래프에서 볼 수 있듯이,
우리가 생성한 각각의 모든 job 은,
GitHub 서버 내부에 분리되어 있는 가상 머신에서 실행기가 구동됩니다.
GitHub action 은 다섯 개의 주요 부분으로 구성되어 있습니다 :
1. Events - 이벤트
GitHub action 워크플로우의 실행 시작 혹은 트리거를 의미.
이벤트는 여러 종류로 나뉜다.
- Internal GitHub Event(내부 깃헙 이벤트) : Push, Release, Fork, Issues, Pull Request 와 같은 것들.
- Scheduled Event(예약된 이벤트) : 시간에 의해 트리거되거나, cron job 과 같은 job 에 의해 트리거 된다.
- Arbitrary External Event(임의의 외부 이벤트) : 깃헙 API 를 사용하는 웹훅에 의해 트리거됨.
2. Workflows - 워크플로우
워크플로우는 보통 이벤트, 혹은 특정 시간에 시작되게끔 스케쥴링 된 이벤트에 의해 시작 될 수 있는 Job 들로 구성됨.
워크플로우는 빌드, 테스트, 릴리즈, 혹은 GitHub 프로젝트에 디플로이(배포) 를 보조한다.
3. Job - 잡
같은 가상 머신 러너, 혹은 컨테이너 내부에서 실행되는 실행 단계의 집합
기본적으로, Job 들은 병렬로 실행되는데, 다른 말로, 이전 Job 이 끝나기를 기다리지 않습니다.
더 나아가, 만약 Job 이 동기화처럼 실행되고자 한다면 설정할 수도 있습니다.
4. Actions - 액션
워크플로우에서, 우리의 목표를 달성하기 위한 개별적인 임무인 actions 들을 지정합니다.
우리는 스스로 action 을 생성할 수 있으며,
혹은 깃헙 커뮤니티에서 생성된 action 을 사용할 수도 있습니다.
5. Runners - 실행기
job 을 실행하는 가상 머신입니다.
실행기는 사용 가능한 job 들을 찾아야 하는 책임이 있으며,
그리고 나서 한번에 각각의 job 을 실행합니다.
job 이 실행을 끝낸 후에,
실행기는 GitHub 에 Job 에 대한 진행 상황과 기록을 보고합니다.
실행기는 GitHub 에서 호스팅되며, 우분투, 리눅스, 윈도우, 맥으로 이루어져 있습니다.
Workflow syntax - 워크플로우 문법
GitHub Actions 사용을 시작하기 위해서,
우리는 GitHub 레포(레포지토리) 의 최상위에서 폴더를 추가해야 합니다.
.github/workflows
위 워크플로우 디렉토리는 YAML 파일들을 담을 겁니다.
또한, 원격 레포지토리에 가서 actions 탭을 눌러 workflow 파일을 직접적으로 생성 할 수 있습니다.
YAML 은 데이터 계층 간의 관계를 표현하기 위해서 고정된 들여쓰기 스키마를 사용합니다.
# your-repo-name/.github/workflows/first_workflow.yml
name: First Workflow
on: push
jobs:
first-job:
name: Name of first step
runs-on: ubuntu-latest
steps:
# step 1
- name: Print a greeting
run: echo Hi from out first workflow!
# step 2
- uses: actions/checkout@v2.3.4
second-job:
strategy:
matrix:
runtimes: [10, 12, 14]
os_version: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os_version }}
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.version }}
위의 워크플로우의 이름은 First Workflow
이며,
이 워크플로우는 push
이벤트에 의해 트리거됩니다.
이제 우리는 워크플로우에 만든 job 들을 가지고 있습니다.
first-job
내부에서, 다음과 같은 용어는 이러한 의미를 가집니다 :
runs-on
: 각각의 Job을 실행해야 하는 머신steps
: 실행되어야 하는 각각의 Job을 가진 임무run
: 하나의 단계에서 실행되어야 하는 명령어uses
: 깃헙 marketplace 에서 우리가 사용하고자 하는 action 시그니쳐
GitHub Actions 는 OS의 여러가지 버전이나, 런타임 환경에서도,
태스크(임무)들을 자동화 해 줍니다.
second-job
에서는,
변수로 조합이 가능한 각각의 Job을 실행합니다.
이 예제에서는, 워크플로우가 6 개의 job 을 실행합니다 :
[10, 12, 14]
x [ubuntu-latest, windows-latest]
: 총 6가지 조합.
지금 당장 모든 단편의 디테일을 이해 할 필요는 없습니다.
나중에 배울 주제들에서 이를 커버할 겁니다.
Conclusion - 결론
GitHub Actions 는 workflow 로 구성되어 있으며,
workflow 는 깃 레포 최상위에서 .github/workflows
위치에 저장되어 있습니다.
워크플로우는 일반적으로 우리가 워크플로우에서 지정해 놓은 특정 이벤트에 의해 트리거되어 실행됩니다.
워크플로우가 트리거 된 이후, 실행기는 job 들을 하나씩 실행합니다.
각각의 job 은 step(단계) 로 구성되어 있으며,
이 step 또한 action 들로 구성되어 있으며,
이러한 action 또한 워크플로우의 일부로서 실행됩니다.
words to remember
capability : 능력
figure : 수치, 그림, 숫자, 본뜨다, 나타나다, 숫자로 나타내다
arbitrary : 임의의, 멋대로인, 독단적인
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
Regular expression - 정규 표현식 기초 (2) | 2024.07.27 |
---|---|
File types - 파일 유형 (0) | 2024.07.25 |
Introduction to CI/CD - CI/CD 소개와 의미 (0) | 2024.07.23 |
JSON - JSON 정의와 기초 (0) | 2024.07.22 |
Hashing: overview - 해싱: 개요 (1) | 2024.07.21 |