GitHub Action 알아보기

2024. 8. 28. 18:47·개발정보
반응형

GitHub Action은 빌드, 테스트 및 배포 파이프라인을 자동화 할 수 있는  지속적인 통합과 지속적인 배포 플랫폼이다. 

[ Like CI / CD ] ( Like가 아닌 그 자체임 )

우리는 워크플로우를 만들어서 우리의 레포지토리를 테스트하고 배포할 수 있으며, 합쳐서 배포할 수 있다. 

 

그 외에도 이슈를 만들면 해당 이슈에 적절한 Label을 붙여주는 등 특정 이벤트에 반응하는 워크플로우도 만들 수 있다. 

 

The components of GitHub Actions

PR이 열리거나 이슈가 만들어지는 등 레포지토리에 이벤트가 발생하면 GitHub Action의 워크플로우가 트리거 되도록

구성할 수 있다. 워크플로우는 직렬 또는 병렬로 실행할 수 있는 하나 또는 여러개의 작업을 포함하고 있다. 

각 작업은 자체 가상 머신 또는 컨테이너 내에서 실행되며, 정의된 스크립트를 실행하거나 워크플로를 간소화할 수 있는

재사용 가능한 확장 기능인 작업을 실행하나의 하나 이상의 단계가 있다. 

 

Workflows 

Workflow는 하나 이상의 작업을 실행하는 구성 가능한 자동화된 프로세스이다. Workflow는 레포지토리에서 체크된 YAML 파일로 정의되며, 레포지토리의 이벤트에 의해 트리거될 때 실행되거나 스케쥴로 정의되거나 수동으로 트리거 될 수 있다. 

 

Workflow는 레포지토리의 .github/workflows 디렉토리에 정의되어 있으며, 레포지토리는 여러 개의 Workflow를 가질 수 있고 각자 다른 작업을 수행할 수 있다. 

예를들어, PR을 빌드하고 테스트하는 Workflow, 릴리스가 만들어질 때마다 애플리케이션을 배포하는 Workflow, 새 이슈를 열 때마다 Label을 추가하는 Workflow를 한번에 가질 수 있다. 

 

Events 

Event는 Workflow 실행을 트리거하는 레포지토리의 특정 활동이다. 예를들어 PR을 만들거나, 이슈를 열거나, 레포지토리에 커밋을 하는 행위들이 될 수 있다. 

 

Jobs

Job은 동일한 Runner에서 실행되는 Workflow의 단계 집합이다. 각 단계는 셸 스크립트이거나 실행될 작업이다. 

단계는 순서대로 실행되며 서로 종속된다. 동일한 Runner에서 실행되므로 다른 단계들과 데이터를 공유할 수 있다. 

예를들어, 애플리케이션을 빌드하는 단계와 빌드된 애플리케이션을 테스트하는 단계가 있을 수 있다. 

 

우리는 Job의 종속성을 다른 Job들과 구성할 수 있으며, 기본적으로 Job은 종속성이 없이 병렬로 실행된다. 

Job이 다른 Job에 종속된 경우, 해당 작업이 끝날 때 까지 기다린 다음 완료되면 실행된다. 

예를들어, 종속성이 없는 여러 아키텍처에 대한 빌드 작업과 이러한 작업에 종속된 패키징 작업이 어러 개 있을 수 있다. 

빌드는 병렬로 실행되며, 모두 완료하면 패키징 작업을 실행한다. 

 

Actions

Action은 복잡하지만 자주 반복되는 작업을 수행하는 GitHub Action 플랫폼용 사용자 지정 애플리케이션이다. Action을 사용하면 Workflow 파일에 작성하는 반복적인 코드의 양을 줄일 수 있다. GitHub에서 git 레포지토리를 가져오거나, 빌드 환경에 적합한 설정을 하거나, 클라우드 제공 업체에 대한 인증을 설정할 수 있다. 

 

Runners

Workflow가 트리거될 때 Workflow를 실행하는 서버이다. 각 Runner는 한 번에 하나의 작업을 실행할 수 있다. 

GitHub는 Workflow를 실행할 수 있는 OS별 Runner를 제공하며, Workflow의 실행은 가상 머신에서 실행된다. 

 

Create an example workflow

GitHub Actions는 YAML 구문을 사용해서 Workflow를 정의한다. 각 Workflow는 레포지토리의 .github/workflows라는 디렉토리에 별도 YAML 파일로 저장된다. 

 

레포지토리에 코드가 푸시될 때마다 명령을 자동으로 트리거하는 예제 Workflow를 만들어 볼 것이다. 

이번에는 GitHub Actions을 활용해서 푸시된 코드를 체크아웃하고, bats 테스트 프레임워크를 설치한 다음, bats 버전을 출력하는 기본 명령어인 bats -v를 실행하게 할 것이다. 

   

   1. 레포지토리 안에 .github/workflows 폴더를 만들어준다. 

   2. worksflows 폴더 안에 learn-github-actions.yml 파일을 만들고 코드를 입력한다. 

name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push]
jobs:
  check-bats-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: "20"
      - run: npm install -g bats
      - run: bats -v

 

   3. 레포지토리에 커밋을 하고 푸시를 해준다. 

 

코드를 입력하고 레포지토리의 Actions을 확인하면 제대로 동작하는 것을 확인할 수 있다. 

 

이제 Workflow 파일의 YAML 구문을 하나씩 이해해보자. 

name: learn-github-actions

선택 사항으로 레포지토리에서 Actions 탭에 표시할 Workflow의 이름을 나타낸다. 

생략하면 Workflow 파일의 이름이 대신 사용 된다. 

 

run-name: ${{ github.actor }} is learning GitHub Actions

선택 사항으로 Workflow에서 생성된 Workflow 실행의 이름으로, 레포지토리의 Action 탭에 있는 실행 목록에 표시된다. 

github에 있는 표현식을 사용해서 Workflow 실행을 트리거한 사용자의 이름을 표시한다. 

 

on: [push]

Workflow의 트리거를 지정한다. 이번 예제에서는 push 이벤트를 사용했으며, workflow는 push가 발생할 때마다 

실행될 것이다. 

 

jobs:

Workflow에서 실행되는 모든 작업을 함께 그룹화한다. 

 

  check-bats-version:

Job의 이름을 check-bats-version으로 정의하였다. 

 

    runs-on: ubuntu-latest

최신 버전의 우분투 리눅스 런처에서 실행되도록 작업을 구성한다. 

GitHub에서 호스팅하는 새 가상 머신에서 작업이 실행된다.

    steps:

check-bats-version Job에서 실행되는 모든 단계를 한번에 그룹화한다. 

해당 섹션 아래에 중첩된 각 항목은 별도의 작업 또는 셸 스크립트이다. 

 

      - uses: actions/checkout@v4

use 키워드는 이 단계에서 actions/checkout Action의 v4를 실행하도록 지정한다. 

레포지토리를 Runner에 체크 아웃하는 작업으로, 코드에 대해 스크립트나 기타 작업( 빌드 및 테스트 )을 실행할 수 있다. 레포지토리의 코드를 Workflow에서 사용할 때마다 체크아웃 작업을 사용해야 한다. 

 

      - uses: actions/setup-node@v4
        with:
          node-version: '20'

이 단계에서는 actions/setup-node@v4 Action을 사용해서 지정된 버전의 Node.js를 설치한다. 

이렇게 하면 node 및 npm 명령이 모두 설정된다. 

 

      - run: npm install -g bats

run 키워드는 Runner에 명령을 실행하도록 지시한다. 

예시에서는 npm을 사용해서 bats 소프트웨어 테스트 패키지를 설치하고 있다. 

 

      - run: bats -v

마지막으로 소프트웨어 버전을 출력하는 매개변수와 함께 bats 명령을 실행한다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발정보' 카테고리의 다른 글

GitHub Action PR 검사  (1) 2024.09.14
GitHub Action Feature 합치기  (2) 2024.09.01
VSCode Git 계정 변경  (0) 2023.04.13
소프트웨어 개발 3대 원칙 - KISS, YAGNI, DRY  (0) 2023.01.26
RSS 피드란?  (2) 2023.01.21
'개발정보' 카테고리의 다른 글
  • GitHub Action PR 검사
  • GitHub Action Feature 합치기
  • VSCode Git 계정 변경
  • 소프트웨어 개발 3대 원칙 - KISS, YAGNI, DRY
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    리액트
    CCNA
    타일러영어
    리얼학습일기
    영어회화
    알고리즘
    javascript
    ChatGPT
    다이소
    식물
    바질 키우기
    react
    영어독학
    바질
    타입스크립트
    webpack
    Docker
    네트워크
    ReactNative
    typescript
    Babel
    자바스크립트
    next.js
    redux
    리얼클래스
    덤프
    프로그래머스
    네이버 부스트캠프
    CSS
    Node.js
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
GitHub Action 알아보기
상단으로

티스토리툴바