GITHUB_TOKEN 살펴보기
GITHUB_TOKEN 살펴보기
GITHUB_TOKEN이 무엇인지, 어떻게 동작하는지, GitHub Actions 워크플로에서 안전한 자동화를 위해 왜 중요한지 알아볼게요.
출처: GITHUB_TOKEN
본문
GITHUB_TOKEN 소개
각 워크플로 작업이 시작될 때 GitHub은 워크플로에서 사용할 고유한 GITHUB_TOKEN 비밀을 자동으로 만들어요. 워크플로 작업에서 GITHUB_TOKEN을 사용해 인증할 수 있어요.
GitHub Actions를 활성화하면 GitHub이 리포지토리에 GitHub App을 설치해요. GITHUB_TOKEN 비밀은 GitHub App 설치 액세스 토큰(installation access token)이에요. 설치 액세스 토큰을 사용해 리포지토리에 설치된 GitHub App을 대신해 인증할 수 있어요. 토큰의 권한은 워크플로를 포함하는 리포지토리로 제한돼요. 자세한 내용은 GitHub Actions 워크플로 문법을 참고하세요.
각 작업이 시작되기 전에 GitHub은 작업용 설치 액세스 토큰을 가져와요. GITHUB_TOKEN은 작업이 끝나거나 유효 최대 수명이 지나면 만료돼요.
토큰의 유효 최대 수명은 러너 유형에 따라 달라져요:
- GitHub 호스팅 러너 최대 작업 실행 시간이 6시간이므로
GITHUB_TOKEN은 최대 6시간 동안 유지될 수 있어요. - 자체 호스팅 러너 최대 작업 실행 시간은 5일이에요. 하지만
GITHUB_TOKEN은 설치 액세스 토큰이므로 최대 24시간까지만 갱신할 수 있어요. 작업이 24시간보다 오래 실행된다면 개인 액세스 토큰이나 다른 인증 방법을 대신 사용하세요.
토큰은 github.token 컨텍스트에서도 사용할 수 있어요. 자세한 내용은 컨텍스트 참조를 참고하세요.
GITHUB_TOKEN이 워크플로 실행을 트리거하는 시기
리포지토리의 GITHUB_TOKEN을 사용해 작업을 수행하면 GITHUB_TOKEN이 트리거한 이벤트는 다음 예외를 제외하고 새 워크플로 실행을 만들지 않아요:
workflow_dispatch와repository_dispatch이벤트는 항상 워크플로 실행을 만들어요.opened,synchronize,reopened활동 유형의pull_request이벤트:GITHUB_TOKEN을 사용하는 워크플로가 풀 리퀘스트를 만들거나 업데이트하면 결과pull_request이벤트는 승인 필요(approval-required) 상태로 워크플로 실행을 만들어요. 풀 리퀘스트의 머지 박스에 배너가 표시되고, 리포지토리에 쓰기 권한이 있는 사용자가 워크플로 실행 승인(Approve workflows to run) 을 선택해 실행을 시작할 수 있어요. 다른pull_request활동 유형(예:labeled,edited,closed)은 워크플로 실행을 만들지 않아요. 이렇게 하면 재귀적 워크플로 실행을 방지하면서도 자동화가 만든 풀 리퀘스트에서 CI 워크플로가 실행될 수 있게 해줘요. 워크플로 실행 승인에 대한 자세한 내용은 포크에서 온 워크플로 실행 승인하기를 참고하세요.
다른 모든 이벤트의 경우 이 동작은 실수로 재귀적 워크플로 실행을 만드는 것을 방지해 줘요. 예를 들어 워크플로 실행이 리포지토리의 GITHUB_TOKEN을 사용해 코드를 푸시하면, push 이벤트가 발생할 때 실행되도록 구성된 워크플로가 리포지토리에 있더라도 새 워크플로는 실행되지 않아요.
[!NOTE] 워크플로가 만든 풀 리퀘스트에서 승인 없이 워크플로 실행이 되도록 해야 한다면, 풀 리퀘스트를 만들거나 업데이트할 때
GITHUB_TOKEN대신 GitHub App 설치 액세스 토큰이나 개인 액세스 토큰을 사용하세요.
GITHUB_TOKEN을 사용하는 GitHub Actions 워크플로가 푸시한 커밋은 GitHub Pages 빌드를 트리거하지 않아요.