Choose a default theme

You can change your theme from the menu

GitHub Actions

Earlier revision · 1View current content

GitHub Actions는 저장소 이벤트와 수동 실행 등을 계기로 빌드·시험·배포 작업을 수행하는 자동화 플랫폼이다. workflow 안에 job과 step을 정의하고 runner가 명령을 실행한다. Git의 이력 관리와 실행 환경의 작업 자동화는 서로 다른 역할이다.

workflow와 runner

workflow는 YAML로 실행 조건과 작업을 기술한다. job은 독립적인 실행 단위이고 step은 같은 job의 실행 환경에서 순서대로 수행한다. needs로 job 사이의 선후 관계를 만들 수 있으며, action은 재사용 가능한 작업 단위다.

GitHub가 제공하는 runner와 직접 관리하는 self-hosted runner를 선택할 수 있다. 자체 실행기는 하드웨어·네트워크·도구를 제어하기 좋지만 운영체제·도구 업데이트와 작업 뒤의 잔여 파일·권한 관리는 운영자의 책임이다.

장점

코드 검토와 같은 위치에서 자동 검증 결과를 볼 수 있고 반복 작업을 기록 가능한 설정으로 만든다. 행렬 시험, 산출물, 캐시를 조합해 여러 환경을 관리할 수 있다.

한계

실행기와 네트워크·외부 서비스의 실패가 작업 결과에 영향을 준다. 캐시는 재현성을 자동 보장하지 않으며 비밀값과 쓰기 권한을 어디에 제공하는지 관리해야 한다. 신뢰하지 않는 변경 코드를 민감한 자체 실행기에서 실행하면 그 컴퓨터의 권한까지 노출될 수 있다.

예시: 직접 만든 가격 계산 규칙 검사

다음 파일을 실습 저장소의 .github/workflows/check-price.yml에 두면 수동 실행할 수 있다. 외부 action이나 배포 권한 없이 작은 Python 검증만 수행한다.

name: Check sample pricing
on:
workflow_dispatch:
permissions:
contents: read
jobs:
arithmetic:
runs-on: ubuntu-latest
steps:
- name: Verify book bundle total
run: |
python3 - <<'PYTHON'
prices = [1200, 1800, 2400]
assert sum(prices) == 5400
print("pricing check passed")
PYTHON

성공하면 step 로그에 pricing check passed가 표시된다. ubuntu-latest는 갱신되는 실행 환경이므로 특정 버전 재현이 필요하면 도구와 실행 환경을 명시적으로 관리한다.

배포 작업과의 분리

빌드 성공·시험 성공·배포 명령 성공·서비스 정상 응답은 각각 다른 확인 항목이다. 배포에는 환경별 권한과 동시 실행 제어, 결과 확인을 더한다. 자체 실행기 라벨은 작업 대상을 선택하는 수단이며 그 자체로 격리 경계가 되지는 않는다.

참고 자료