GitHub Actions의 세가지 구성요소 : Workflows, Jobs, Steps

2022. 12. 9. 20:00· CI, CD/GitHub Actions
반응형

GitHub Action의 세가지 구성요소

GitHub Actions는 Workflow, Job, Step 세가지 구성요소로 이루어진다. Step은 Job에 포함되고, Job은 Workflow에 포함된다. 즉, Workflow가 가장 큰 작업 단위이고, 그 아래 Job이 있고, Job 아래에는 Step이 있다. 이를 그림으로 나타내면 아래와 같다.

 

 

이 세가지를 잘 활용하면, 많은 작업들을 자동화 할 수 있다. 이제 이들 각각이 무엇인지 알아보자.

 

Workflows

Workflow는 GitHub Repository에 들어가는 작업 단위이다. 보통 Repository의 /.github/workflows/ 경로에 존재하며, 확장자는  .yml 이다.  

 

 

예를 들어 위의 그림에서는 first_action.yml이라는 Workflow 파일이 있다. 하지만 여기서 파일 이름인 first_aciton이 Workflow의 이름은 아니다. Workflow 파일 내부에는 name: [Workflow 이름] 이 있는데 여기서 Workflow의 이름을 설정한다.

 

# WorkFlow의 이름 설정
name: First workflow

 

Workflow는 어떤 이벤트에 따라 Workflow를 실행시킬지를 on: 키워드를 사용해 설정할 수 있다. 예를 들어 아래에서는 main 브랜치에 푸시가 일어나거나 pull request가 일어날 경우 Workflow가 실행된다.

# Workflow가 Trigger되는 이벤트 설정
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

 

또한 Workflow는 여러 job을 포함한다. 예를 들어 테스트 후 빌드를 돌리는 job을 아래와 같이 설정할 수 있다.

# job을 설정
jobs:
  # test job
  test:
  # build job
  build:

 

Jobs

Job은 병렬적으로 수행되거나 순차적으로 수행되어야 하는 작업의 단위이다. 기본 값은 병렬로 수행되는 것이다. 실행이 되기 위해서는 작업 환경의 정의가 필요한데, 이를 Runner라 부른다. Runner는 아래와 같이 runs-on: 을 통해 설정이 가능하다. 아래에서는 ubuntu-latest로 설정되어 있는데 이 키워드는 GitHub Action에서 제공하는 다양한 ubuntu runner 중 가장 최신 Runner이다.

 

jobs: 
  first-job:
    #runs-on: job이 돌아갈 실행환경 설정 
    runs-on: ubuntu-latest

 

Job은 하나 혹은 그 이상의 Step을 포함한다.

 

 

Steps

Step은 Job이 포함되며, shell script나 Action을 실행한다. shell script는 terminal에서 수행하는 명령어의 집합이고, Action은 GitHub Action에서 미리 정의한 script이다. 커스텀 Action이나, 서드파티에서 제공하는 Action을 수행하는 것도 가능하다. 예를 들어 actions/checkout@v3 는 GitHub Actions에서 미리 정의한 Action으로 아래와 같이 포함될 수 있다.

jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest
    environment: production

    steps:
    - name: Checkout
      uses: actions/checkout@v3

 

Step은 무조건 순차적으로 수행되며, 특정 조건을 충족할 때만 수행하도록 할 수도 있다.

반응형
저작자표시 비영리 변경금지


 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com

'CI, CD/GitHub Actions' 카테고리의 다른 글
  • [GitHub Actions] Action이란 무엇인가? checkout 사용해 코드 내려받기
  • [GitHub Action] 첫 Workflow 만들고 실행하기
  • GitHub Action에서 사용할 수 있는 Virtual Machine 종류와 사양, 미리 설치된 소프트 웨어 알아보기 : runs-on에 Runner 설정하기
  • Git, GitHub, GitHub Action 한 번에 알아보기
Dev.Cho
Dev.Cho
'조세영의 Kotlin World'는 Kotlin를 전문적으로 다루는 개인 기술 블로그입니다. Kotlin 세계에 대한 양질의 자료를 제공하며 Kotlin, Android, Spring, CI, CD 분야에 대해 다룹니다.
Dev.Cho
조세영의 Kotlin World
Dev.Cho
전체
오늘
어제

블로그 메뉴

  • LinkedIn
  • GitHub
  • 분류 전체보기 (491)
    • Kotlin (104)
      • Class and Interface (19)
      • Variable and Function (8)
      • Modifier (5)
      • Collection (14)
      • Time (8)
      • 동시성 제어 (7)
      • Reactive Programming (2)
      • Paradigm (2)
      • Kotlin 자료구조 (15)
      • Design Patterns (11)
      • Algorithm (3)
      • Exception (1)
      • 기타 (9)
      • Update History (0)
    • Coroutines (32)
      • Coroutine Basics (18)
      • Flow (9)
      • CoroutineScope (3)
      • Debugging (2)
    • Testing Codes (28)
      • Test 기본 (3)
      • JUnit5 (9)
      • MockK (6)
      • Testing Coroutines (1)
      • Testing Android (8)
      • Test 기타 (1)
    • Spring (50)
      • Dependency Injection (18)
      • Settings (5)
      • REST API (0)
      • DevTools (1)
      • MVC (18)
      • Error (2)
      • MongoDB (2)
      • Database (4)
    • Android (39)
      • Architecture (2)
      • Component (5)
      • Manifest (1)
      • Lifecycle (2)
      • Dependency Injection (17)
      • Resource (1)
      • Storage (1)
      • Security and Optimization (1)
      • WebView (2)
      • Error (6)
    • Android Jetpack Compose (33)
      • Compose (6)
      • Compose Modifier (13)
      • Compose Resource (4)
      • Compose State (4)
      • Compose Side Effect (6)
    • Android Jetpack Compose UI (48)
      • Compose Layout (14)
      • Compose Text (10)
      • Compose Button (5)
      • Compose Dialog (2)
      • Compose TextField (0)
      • Compose UIs (4)
      • Compose Animation (1)
      • Compose Canvas (12)
    • Android Jetpack (10)
      • Datastore (5)
      • ViewModel (4)
      • LiveData (1)
      • Paging (0)
    • KMP (5)
    • Programming (4)
    • Machine (9)
      • JVM (7)
      • Linux (2)
    • CI, CD (74)
      • Gradle (12)
      • Groovy Gradle (5)
      • Git (25)
      • Git Remote (5)
      • GitHub (5)
      • GitHub Actions (21)
    • Network (33)
      • GraphQL (12)
      • HTTP (11)
      • Basic (9)
    • 오픈소스 (3)
    • Database (3)
      • MongoDB (3)
    • IDE (6)
      • Android Studio (2)
      • Intellij (4)
    • Firebase (1)
    • Javascript (9)

공지사항

  • 코틀린 코루틴 완전 정복 강의 in 인프런 오픈
  • 코틀린 코루틴의 정석 책 출간
  • Kotlin Coroutines 공식 기술 문서 한국어 번⋯
  • GitHub에서 조세영의 Kotlin World를 Foll⋯
  • 문의&제안

인기 글

태그

  • dagger2
  • Spring boot
  • junit
  • github actions
  • kotlin spring
  • 코틀린
  • GraphQL
  • junit5
  • Unit Testing
  • gradle
  • java
  • junit4
  • Spring
  • compose
  • 코루틴
  • 안드로이드
  • Android
  • flow
  • Kotlin
  • Jetpack Compose
  • Class
  • Coroutine
  • Android Compose
  • GIT
  • 의존성 주입
  • HTTP
  • 스프링
  • github
  • 유닛 테스팅
  • Dependency Injection

최근 글

반응형
hELLO · Designed By 정상우.v4.3.0
Dev.Cho
GitHub Actions의 세가지 구성요소 : Workflows, Jobs, Steps
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.