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가 실행되는 트리거에 대한 설명으로 옳지 않은 것은?
- push 이벤트는 특정 브랜치나 태그에 커밋이 푸시될 때 실행된다.
- workflow_dispatch 이벤트는 사용자가 수동으로 워크플로우를 실행할 때 사용된다.
- workflow_run 이벤트는 다른 워크플로우가 완료되었을 때 후속 워크플로우를 실행할 수 있다.
- 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
반응형
'Azure' 카테고리의 다른 글
[Azure] Data Platform 구축 시 요구사항 정의와 Cloud 특징 (Azure 중심) (0) | 2025.08.24 |
---|---|
[Azure] Azure 기반 Messaging 구성법 및 필요로 하는 Azure 서비스 (1) | 2025.08.24 |
AKS with GPU 구성 시, 자원을 효율적으로 사용하기 위한 방안 (0) | 2025.08.23 |
AKS Monitoring를 활용한 자원/Workload 모니터링 이해 (0) | 2025.08.23 |
[Azure] Vnet Flow log 서비스 종류와 특징 (0) | 2025.08.21 |