Github Action?

Chunbae·2024년 10월 9일

개발이론

목록 보기
3/6

Github Action이란

CI/CD를 위한 Github의 플랫폼입니다.
많이 알려져있는 Jenkins 오픈소스와 동일하게 CI/CD기능을 수행하지만 Github Action은 따로 서버를 구축하지 않고 Github내에서 워크 플로를 구현합니다.

Repository에 대한 모든 풀 요청을 빌드 및 테스트하는 워크플로를 생성하거나 merge된 풀 요청을 프로덕션에 배포할 수 있게합니다.

구성

Event

Event는 workFlow를 실행하는 트리거 역할이다.
Push, Pull Request, Commit등을 지정하여 자동으로 WorkFlow가 동작하도록 할 수 있고, 일정에 따라 동작하도록 설정이 가능하다.


WorkFlow

WorkFlow는 하나 이상의 작업을 실행할 구성한 자동화 된 프로세스이다.
하나 이상의 Job으로 구성되어 있으며, Event가 트리거되면 그에 알맞는 workflow를 찾아 자동화된 작업을 실행한다.

.github/workflow 디렉토리내 YAML파일로 정의 된다.

# 이 워크플로우는 push 이벤트가 발생할 때 실행
name: CI/CD Workflow

# 워크플로우 실행 트리거 설정
on:
  push:
    branches:
      - main  # main 브랜치에 push될 때만 실행.

# 워크플로우의 각 작업(job) 정의
jobs:
  # 프론트엔드 빌드 및 테스트 작업 정의
  frontend:
    runs-on: ubuntu-latest  # 최신 우분투 환경에서 실행
    steps:
      - name: Check out code  # 코드를 체크아웃
        uses: actions/checkout@v2
        
      - name: Set up Node.js  # Node.js 환경을 설정
        uses: actions/setup-node@v2
        with:
          node-version: '16'  # 사용하고자 하는 Node.js 버전
        
      - name: Install dependencies  # 의존성
        run: npm install
        
      - name: Run tests  # 테스트를 실행
        run: npm test -- --watchAll=false
        
      - name: Build frontend  # 프론트엔드 애플리케이션을 빌드
        run: npm run build

  # 백엔드 빌드 및 테스트 작업 정의
  backend:
    runs-on: ubuntu-latest  # 최신 우분투 환경에서 실행
    steps:
      - name: Check out code  # 코드를 체크아웃
        uses: actions/checkout@v2
        
      - name: Set up JDK  # Java 환경을 설정
        uses: actions/setup-java@v2
        with:
          java-version: '11'  # 사용하고자 하는 Java 버전
        
      - name: Install dependencies  # 의존성
        run: ./mvnw install -DskipTests
        
      - name: Run tests  # 테스트를 실행
        run: ./mvnw test
        
      - name: Build backend  # 백엔드 애플리케이션을 빌드
        run: ./mvnw package -DskipTests

  # 배포 작업 정의
  deploy:
    runs-on: ubuntu-latest
    needs: [frontend, backend]  # frontend와 backend 작업이 성공적으로 완료되어야 실행
    steps:
      - name: Deploy to AWS  # AWS에 배포하는 스크립트를 실행
        run: echo "Deploying to AWS..."  # 실제 배포 명령어로 변경 필요

Job

workFlow 내에 여러 Step의 집합이다. run이라는 가상 머신에서 실행되며 하나이상의 단계를 포함 시킬수 있고 병렬처리와 순차적처리가 가능하다.

Step

step은 Job에 대한 가장 작은 단위이다. 각 단계에서 셀 명령을 실행하거나 작업을 실행한다.
step은 workflow파일에 지정된 순서대로 실행되며 각 step은 동일한 실행기 인스턴스 내에서 실행된다.

Runner

작업에서 실행되는 가상 머신 또는 호스팅 환경을 의미한다. GitHub는 다양한 운영체제(Linux, MacOS, WinodwOS)등을 지원하고 하드웨어 구성은 호스팅 러너에 제공하거나 전문적ㅇ니 요구 사항을 위해 자체 호스팅 러너를 설정할 수 있다.

Actions

작업의 흐름에서 공유 및 결합을 할 수 있는 재사용이 가능한 코드의 단위를 말한다.
Github커뮤니티에서 개발 및 게시하거나 자체적으로 사용할 수 있도록 만들 수 있다.

Reference

Github Action 공식문서
kakao Github Action 자료

profile
말하는 감자

0개의 댓글