Github Actions로 업무 자동화 도입하기 #4. Jobs, Step, Actions, Runners

2024. 8. 5. 15:55개발/버전 관리

728x90
반응형

Github Actions로 업무 자동화 도입하기 #1 : Github Actions란?

Github Actions로 업무 자동화 도입하기 #2 : Workflows (워크플로우)

Github Actions로 업무 자동화 도입하기 #3 : Workflows를 트리거 하는 이벤트


 

GithubActions의 구성요소를 정의하는 데에 많은 시간을 쏟고 싶지 않다.

그래서 나머지 구성요소를 싹 묶어서 정리하기로 했다 ㅎㅎ;;

 

1. Jobs

1-1. Job 란?

Jobs는 Workflows 내에서 실행되는 개별 작업 단위이다.

워크플로우는 여러 개의 잡으로 구성될 수 있으며, 각 Job은 독립적으로 실행된다.

1-2. Job의 특징

  • 독립성: 각 Job은 독립적으로 실행되며, 필요에 따라 다른 Job에 의존성을 설정할 수 있다.
  • 실행 환경: runs-on 키워드를 사용하여 Job이 실행될 환경을 지정한다.
  • 병렬 실행: 기본적으로 각 Job은 병렬로 실행되지만, needs 키워드를 사용하여 순차적으로 실행되도록 설정 가능하다.

1-3. Job 예시

name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Build application
        run: make build

  test:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Run tests
        run: make test
  • build Job은 ubuntu-latest 환경에서 실행되며, 코드를 체크아웃하고 애플리케이션을 빌드한다.
  • test Job은 build Job이 완료된 후에 실행되며, 테스트를 수행한다.

2. Step

2-1. Step 란?

Steps는 Job 내에서 실행되는 개별 명령어 또는 작업이다.

각 Step은 순차적으로 실행된다.

2-2. 특징

  • 순차 실행: 각 Step은 정의된 순서대로 실행된다.
  • 명령어 실행: run 키워드를 사용하여 Shell 명령어를 실행할 수 있다.
  • 작업 사용: uses 키워드를 사용하여 사전 정의된 작업을 호출할 수 있다.

2-3. 예시

steps:
  - name: Checkout code
    uses: actions/checkout@v2
  - name: Set up Node.js
    uses: actions/setup-node@v2
    with:
      node-version: '14'
  - name: Install dependencies
    run: npm install
  - name: Run tests
    run: npm test
  • Checkout code: actions/checkout 작업을 사용하여 소스 코드를 체크아웃
  • Set up Node.js: actions/setup-node 작업을 사용하여 Node.js 버전을 14로 설정
  • Install dependencies: npm install 명령어를 실행하여 종속성 설치
  • Run tests: npm test 명령어를 실행하여 테스트 수행

3. Actions

3-1. Actions 란?

Actions는 Workflows의 Step 내에서 실행되는 재사용 가능한 작업이다.

Github Market Place에서 제공되는 사전 정의된 작업을 사용하거나 사용자 정의 작업을 만들어 재사용 가능하다.

3-2. 특징

  • 재사용성: 한 번 정의된 작업은 여러 Workflows에서 재사용 할 수 있다.
  • 커뮤니티 제공: Github MarketPlace에는 다양한 작업을 제공함
  • 사용자 정의: 직접 작업을 정의하여 특정 요구사항을 충족할 수 있음

3-3. 예시

steps:
  - name: Checkout code
    uses: actions/checkout@v2
  - name: Set up Node.js
    uses: actions/setup-node@v2
    with:
      node-version: '14'
  • Checkout Code: actions/checkout 작업을 사용하여 소스 코드 체크아웃
  • Set up Node.js: actions/setup-node 작업을 사용하여 Node.js 버전을 14로 설정

4. Runners

4-1. Runners 란?

Runners는 Workflows Job을 실행하는 환경(머신)이다.

Github Hosting Runner 와 Self Hosting Runner가 있다.

4-2. 종류

  • Github Hosting Runner: Github가 제공하는 가상 환경에서 실행된다. 다양한 운영체제 지원
  • Self Hosting Runner: 사용자가 직접 관리하는 물리적 또는 가상 머신에서 실행. 사용자 고유의 환경 설정 사용 가능

4-3. 예시

jobs:
  build:
    runs-on: ubuntu-latest
  • runs-on: ubuntu-latest 환경에서 Job을 실행하도록 지정

그러니까 지금까지의 내용을 요약하자면

 

RunnersJob을 실행하는 환경이고,

Job여러개의 Step으로 구성되며

Step개별 명령어 또는 작업을 실행하고,

ActionsStep에서 호출되는 재사용 가능한 작업이다.

 

계층구조로 보자면 Runners > Job > Step > Actions

이건 내가 이해하기 쉽게 직접 그린 그림이다.

 

지금까지 정리한 구성요소의 전체적인 계층구조로 보면

Event > Workflow > Job > Step > Action

여기까지 정리하니 이제야 이 그림이 이해된다.

728x90
반응형