Azure

Github Action의 의 기술구조 이해(Trigger Event 등)

chaenii 2025. 8. 24. 12:24

1. GitHub Actions란?

  • 코드 저장소와 연결된 자동화 도구
  • CI/CD(지속적 통합·배포) 파이프라인을 GitHub 안에서 바로 구성할 수 있음

구성 요소 흐름은 다음과 같음:

  • Workflow: .github/workflows/*.yml에 정의하는 전체 파이프라인
  • Job: Workflow를 구성하는 실행 단위(병렬/순차 실행 가능)
  • Step: Job안의 실행 단계 (uses, run으로 작성)
  • Runner: Job을 실제 실행하는 서버 환경 (예: ubuntu-latest)

2. Event Trigger (이벤트 트리거)

GitHub Actions는 특정 이벤트가 발생했을 때 워크플로우를 실행함.

이벤트 이름 언제 실행되는가?
push 코드가 특정 브런치/태그에 푸시될 때
pull_request PR 생성·업데이트·재오픈할 때
workflow_dispatch 사람이 수동으로 실행할 때
schedule cron 표현식으로 주기적 실행
workflow_run 다른 Workflow가 끝났을 때
repository_dispatch 외부 시스템에서 API 호출로 트리거

👉 이벤트는 on: 블록에 정의:

 
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  workflow_dispatch:

3. Job 간 데이터 전달

  • 각 Job은 기본적으로 독립 실행 → 파일이 공유되지 않음
  • 해결책: actions/upload-artifact 와 actions/download-artifact를 이용해 Job 간 결과물 전달
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo "Hello" > result.txt
      - uses: actions/upload-artifact@v3
        with:
          name: build-artifact
          path: result.txt

  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v3
        with:
          name: build-artifact

4. Secret 개념

  • Secret: 비밀번호, 토큰 등 민감정보를 GitHub Settings → Secrets에 등록해 보관.
  • 워크플로우에서 secrets.<이름>으로 불러옴.
     
  • 절대 코드에 직접 토큰/비밀번호 넣으면 ❌ → 시험에서도 자주 나오는 보안 포인트.
- run: echo ${{ secrets.AZURE_CREDENTIALS }}

문제 1 (선다형)

다음 중 GitHub Actions Workflow가 실행되는 트리거에 대한 설명으로 옳지 않은 것은?

  1. push 이벤트는 특정 브랜치나 태그에 커밋이 푸시될 때 실행된다.
  2. workflow_dispatch 이벤트는 사용자가 수동으로 워크플로우를 실행할 때 사용된다.
  3. workflow_run 이벤트는 다른 워크플로우가 완료되었을 때 후속 워크플로우를 실행할 수 있다.
  4. pull_request_target 이벤트는 PR이 생성될 때 실행되며, 포크에서 온 코드에 대해서도 안전하게 시크릿이 공유된다.

👉 정답: 4번
(pull_request_target는 베이스 저장소 컨텍스트로 실행되어 시크릿 접근이 가능하므로 “안전하다”는 설명은 잘못.)


문제 2 (단답형)

GitHub Actions Workflow 파일은 반드시 저장소의 어떤 경로에 위치해야 GitHub에서 인식하고 실행할 수 있는가?

👉 정답: .github/workflows/


문제 3 (빈칸 채우기 – KICE 스타일)

다음 파이프라인은 Build Job에서 생성된 결과물을 Package Job에서 활용하려고 한다. 빈칸에 들어갈 적절한 액션을 작성하시오.

jobs:
  Build:
    runs-on: ubuntu-latest
    steps:
      - run: echo "hello" > result.txt
      - uses: actions/upload-artifact@v3
        with:
          name: build-artifact
          path: result.txt

  Package:
    needs: Build
    runs-on: ubuntu-latest
    steps:
      - uses: ______
        with:
          name: build-artifact
          path: artifact

👉 정답: actions/download-artifact@v3


문제 4 (서술형)

GitHub Actions에서 Secret을 직접 코드에 작성하지 않고 안전하게 관리하기 위한 방법과, 포크 저장소에서 발생한 PR 이벤트 시 시크릿이 전달되지 않는 이유를 설명하시오.

👉 예시 답안:

  • GitHub Repository → Settings → Secrets에 등록 후 ${{ secrets.<NAME> }} 형태로 참조해야 한다.
  • 포크 PR은 외부 사용자가 악의적인 코드를 실행할 수 있으므로, 보안을 위해 기본적으로 시크릿이 전달되지 않는다.

(https://docs.github.com/ko/actions/reference/workflow-syntax-for-github-actions)

 

GitHub Actions에 대한 워크플로 구문 - GitHub Docs

워크플로는 하나 이상의 작업으로 구성된 구성 가능한 자동화된 프로세스입니다. 워크플로 구성을 정의하려면 YAML 파일을 만들어야 합니다.

docs.github.com

 

반응형