섹션 9: Github Actions

쌀과자AI·2025년 8월 26일

📌 섹션 9: GitHub Actions 요약

1. GitHub Actions 개요

  • GitHub ActionsCI/CD(Continuous Integration & Continuous Delivery) 플랫폼으로, 빌드·테스트·배포 파이프라인을 자동화.
  • 특징
    • 단순히 DevOps에 국한되지 않고, PR 생성, Issue 작성, 라벨 추가 등 다양한 이벤트에도 반응 가능 .
    • 워크플로우 실행은 Docker 컨테이너 기반 Runner에서 수행.
    • 언어 불문으로 사용할 수 있으며, 로컬/클라우드 환경에서 실행 가능.

2. GitHub Actions 워크플로우 구조

  • Workflow: YAML 파일(.github/workflows/)로 정의되며 특정 이벤트 발생 시 실행.
  • 구성요소
    • Event: 트리거(예: push, PR 생성, issue 댓글 등).
    • Job: 이벤트 발생 시 실행되는 작업 단위. 병렬 실행 가능.
    • Step: Job 내 실행 단계. 쉘 명령어 또는 액션(Action) 실행.
    • Action: 재사용 가능한 작업 단위. GitHub Marketplace에서 제공되거나 직접 정의 가능 .

3. GitHub Actions 실습 (Demo)

(1) 기본 워크플로우 생성

  • .github/workflows/github-actions-demo.yaml 파일 작성 .
  • 주요 내용:
    • on: [push] → Push 시 실행.
    • jobs.Explore-GitHub-Actions → Ubuntu VM에서 실행.
    • 단계별 실행:
      • 이벤트 및 실행 환경 출력 (echo)
      • 코드 checkout (actions/checkout@v4)
      • 저장소 파일 확인 (ls)
      • Job 상태 출력 (job.status)

👉 실행 후 GitHub Actions 탭에서 워크플로우 성공 여부 확인 가능.


(2) 커스텀 워크플로우 작성

  • first-github.yaml 파일 예시 :
    • on.push.branches: main → main 브랜치에 push될 때 실행.
    • 환경변수 설정:
  • YAML
    env:
      PROJECT_NAME: githubactions-demo
      COURSE: LLMOps-by-Manifold-AI-Learning
    • Steps:
      • echo로 메시지 출력
      • actions/checkout@v4으로 저장소 코드 체크아웃
      • printenv 실행으로 환경변수 확인
      • 지정한 환경변수 출력

👉 커밋 메시지가 워크플로우 실행명으로 표시됨.


4. GitHub Marketplace 활용

  • 대부분의 워크플로우는 처음부터 작성하지 않고 Marketplace 템플릿 활용.
  • 예시: Google Kubernetes Engine(GKE) 배포 워크플로우
    • Docker 이미지를 빌드 → Google Container Registry 업로드 → GKE에 배포.
    • 필요 조건:
      • deploy.yaml 등 Kubernetes 매니페스트 파일
      • GitHub ↔ Google Cloud 인증
      • 환경 변수(GKE zone, GCR location 등) 설정 .

🎯 핵심 정리

  1. GitHub Actions = CI/CD + 이벤트 기반 자동화 플랫폼
  2. 워크플로우 구조 = Event → Job → Step → Action
  3. 실습:
    • github-actions-demo.yaml → push 이벤트 기반 Demo
    • first-github.yaml → main 브랜치 push, 환경변수 활용
  4. 실무 적용: Marketplace 템플릿 활용하여 클라우드 배포, CI/CD 파이프라인 손쉽게 구성

📘 섹션 9: GitHub Actions 문제 세트

난이도 하 (기초 확인)


문항 1) GitHub Actions는 어떤 목적으로 사용되는 플랫폼인가?

① 데이터베이스 백업 자동화 플랫폼

② CI/CD(지속적 통합 및 배포) 플랫폼

③ IDE 통합 개발 환경

④ 컨테이너 오케스트레이션 플랫폼

➡ 정답: ②

해설: GitHub Actions는 Continuous Integration & Continuous Delivery를 위한 자동화 플랫폼으로, 코드 빌드·테스트·배포 등을 자동화한다 .


문항 2) GitHub Actions의 워크플로우 파일은 반드시 어디에 위치해야 하는가?

① 프로젝트 루트 디렉토리

② .github/workflows/ 디렉토리

③ docs/ 디렉토리

④ /etc/config/ 디렉토리

➡ 정답: ②

해설: 워크플로우는 .github/workflows/ 경로 내에 있어야 GitHub에서 자동으로 인식한다 .


난이도 중 (이해력 확인)


문항 3) 다음 중 GitHub Actions의 구성 요소 설명으로 옳지 않은 것은?

① Event: 워크플로우를 트리거하는 행동(예: push, PR 생성).

② Job: 병렬로 실행될 수 있는 작업 단위.

③ Step: Job을 이루는 실행 단계, 쉘 명령어나 액션 실행 가능.

④ Runner: YAML 문법을 검증하는 유효성 검사기.

➡ 정답: ④

해설: Runner는 GitHub에서 제공하는 실행 환경(서버)으로 워크플로우를 실행한다. YAML 문법 검증기가 아니다 .


문항 4) 다음은 GitHub Actions YAML 파일 일부이다. 빈칸 (A), (B)에 들어갈 알맞은 값은?

name: My Github workflow
on:
  (A):
    branches:
      - main

jobs:
  myexamplejob:
    runs-on: (B)

① (A) push, (B) ubuntu-latest

② (A) commit, (B) docker

③ (A) trigger, (B) github-runner

④ (A) action, (B) kubernetes

➡ 정답: ①

해설: 이벤트 트리거는 push, 실행 환경은 ubuntu-latest로 지정해야 한다 .


난이도 상 (심화 응용)


문항 5) 다음 시나리오를 고려하시오.

“ML 모델을 배포하기 위해 GitHub Actions를 활용하고자 한다. main 브랜치에 push될 때마다 Docker 이미지를 빌드하고, 이를 Google Container Registry에 업로드 후 GKE(Google Kubernetes Engine)에 자동 배포하려고 한다.”

이를 구현하기 위해 필요한 추가 조건으로 올바르지 않은 것은?

① GKE 배포를 위한 deploy.yaml 등의 Kubernetes 매니페스트 파일

② GitHub ↔ Google Cloud 인증(Workload Identity Provider 등)

③ 환경 변수(GKE_ZONE, GCR_LOCATION 등) 설정

④ GitHub Marketplace에서 “Python Unit Test” 액션 설치

➡ 정답: ④

해설: Python Unit Test 액션은 ML 배포와 직접적인 관련이 없다. 실제로는 매니페스트 파일, 인증 구성, 환경변수 설정이 필수 .


문항 6) GitHub Actions에서 환경변수(env)를 활용해 "PROJECT_NAME=githubactions-demo"를 선언하였다. 이를 echo 명령어에서 출력하기 위한 올바른 문법은?

① echo $PROJECT_NAME

② echo ${{ PROJECT_NAME }}

③ echo ${{ env.PROJECT_NAME }}

④ echo env.PROJECT_NAME

➡ 정답: ③

해설: GitHub Actions에서는 ${{ env.VARIABLE_NAME }} 구문으로 환경변수를 참조한다 .

profile
AI에 관심이 많은 23살 대학생입니다.

0개의 댓글