CI 가 되는 YAML
GitHub Actions workflow 는 .github/workflows/<name>.yaml 에 살아. 언제 (event), 어디서 (runner), 무엇을 (step) 돌릴지를 선언하는 파일이야. 층은 세 개로 겹쳐. workflow 안에 jobs, jobs 안에 steps.
골격
on:— 무엇이 이걸 깨우는지 정해.push,pull_request,workflow_dispatch(손으로 실행),schedule(cron),workflow_call(다른 workflow 가 불러 씀).jobs:— 이름 붙은 job 들이고 기본으로 동시에 돌아. job 마다runs-on:으로 runner 를 고르고.steps:— job 안에서 순서대로 도는 목록이야. step 하나는uses:(공개된 액션) 아니면run:(shell 명령) 이야.
Secret 과 권한
Secret 은 리포 단위나 org 단위로 두고 ${{ secrets.NAME }} 로 불러 써. 기본 GITHUB_TOKEN 은 2023 년부터 contents 권한이 읽기 전용이야. tag 를 push 하거나 release 를 만드는 것처럼 쓰기가 필요하면 job 에 permissions: contents: write 를 명시해야 해.
'액션을 SHA 로 pin' 규칙:
uses: actions/checkout@v4 는 v4 라는 움직이는 tag 를 따라가. 계정이 털린 maintainer 가 v4 아래에 악성 코드를 올리면 그게 그대로 CI 에서 돌아. 공급망을 지키려면 SHA 로 못 박아. uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 이렇게. 갱신은 Dependabot 이 알아서 해줘.