Skip to main content

GITHUB_TOKEN으로 인증하기

write 권한을 갖고 있다면 시크릿을 생성, 읽기, 사용할 수 있습니다.

GITHUB_TOKEN 시크릿에 관하여#

깃허브는 자동으로 GITHUB_TOKEN 워크플로우 안에서 사용할 시크릿을 생성합니다. GITHUB_TOKEN으로 워크플로우 실행을 하기 위한 인증을 할 수 있습니다.

깃허브 액션을 활성화시킬 때, 깃허브는 깃허브 앱을 레포지토리에 설치하게 됩니다. GITHUB_TOKEN 시크릿은 깃허브 앱 설치 액세스 토큰입니다. 설치 액세스 토큰을 레포지토리에 설치된 깃허브 앱을 대신하여 인증에 사용할 수 있습니다. 토큰의 권한은 워크플로우가 포함된 레포지토리로 제한됩니다. 더 자세한 내용은 GITHUB_TOKEN의 권한을 참고하세요.

설치액세스 토큰은 60분 이후에 만료됩니다. 깃허브는 각 잡이 시작하기 전에, 토큰을 페치(fetch) 합니다.

GITHUB_TOKEN을 워크플로우에서 사용하기#

GITHUB_TOKEN 시크릿을 사용하기 위해서는, 워크플로우 파일에 반드시 추가해주어야 합니다. 토큰을 사용하는 것은 토큰을 요구한 액션의 입력값으로써 통과시키는 것이나, 인증된 GitHub API calls를 제작하는 것을 포함할 수 있습니다.

GITHUB_TOKEN을 입력값으로 통과시키기#

이 워크플로우 예시는 labeler action을 사용하였고, 이는 GITHUB_TOKENrepo-token 입력 파라미터를 위한 값으로 요구합니다.

name: Pull request labeler
on:
- pull_request
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

REST API를 콜하는 예제#

GITHUB_TOKEN을 인증된 API calls를 만드는데 쓸 수 있습니다.

name: Create issue on commit
on:
- push
jobs:
create_commit:
runs-on: ubuntu-latest
steps:
- name: Create issue using REST API
run:
curl --request POST \
--url https://api.github.com/repos/${{ github.repository }}/issues \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--header 'content-type: application/json' \
--data '{
"title": "Automated issue for commit: ${{ github.sha }}",
"body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
}'

GITHUB_TOKEN의 권한#

API 엔드포인트 깃허브 앱은 각 권한들에 접근할 수 있다. 이에 대한 정보는 깃허브 개발자 도큐멘테이션 안의 깃허브 앱 권한을 참고하세요.

권한접근 타입포크된 레포드들의 접근
checksread/writeread
contentsread/writeread
deploymentread/writeread
issuesread/writeread
metadatareadread
packagesread/writeread
pull requestsread/writeread
repositoryread/writeread
statusesread/writeread

만약 GITHUB_TOKEN에서 불가능한 권한을 요구하는 토큰이 필요하다면, 개인적인 액세스 토큰을 생성하고, 시크릿으로서 설정할 수 있습니다.

  1. 적절한 권한으로 토큰을 생성하세요. 커맨드 라인을 위한 퍼스널 액세스 토큰 생성을 참고하세요.
  2. 시크릿으로써 토큰을 워크플로우 레포지토리에 추가합니다. 그리고 secrets.SECRET_NAME를 사용하여 그것을 참조합니다. 더 자세한 내용은 암호화된 시크릿 만들기 참고하세요.