Skip to main content

GitHub Actions 워크플로에서 GitHub 앱을 사용하여 인증된 API 요청 만들기

GitHub App의 설치 액세스 토큰을 사용하여 GitHub Actions 워크플로에서 인증된 API 요청을 수행할 수 있습니다. 토큰을 사용자 지정 작업에 전달하여 해당 작업이 인증된 API 요청을 하도록 설정할 수도 있습니다.

GitHub Actions 인증에 대해

워크플로에서 GitHub Actions 인증된 API 요청을 수행해야 하거나 토큰이 필요한 사용자 지정 작업을 실행해야 하는 경우 가능한 경우 기본 제공 GITHUB_TOKEN 을 사용해야 합니다. 그러나 GITHUB_TOKEN은 워크플로의 리포지토리 내의 리소스에만 액세스할 수 있습니다. 조직 또는 다른 리포지토리의 리소스와 같은 추가 리소스에 액세스해야 하는 경우 다음을 GitHub App사용할 수 있습니다. GitHub App 대신 personal access token를 사용하는 이유에 대한 자세한 내용은 GitHub 앱 만들기 정보을(를) 참조하세요.

GitHub App를 사용하여 인증하기

인증된 GitHub App API 요청을 만드는 데 사용하려면 앱의 자격 증명을 GitHub App등록하고, 앱의 자격 증명을 저장하고, 앱을 설치해야 합니다. 이 작업이 완료되면 앱을 사용하여 워크플로에서 인증된 API 요청을 만드는 데 사용할 수 있는 설치 액세스 토큰을 GitHub Actions 만들 수 있습니다. 설치 액세스 토큰을 토큰이 필요한 사용자 지정 작업에 전달할 수도 있습니다.

  1. GitHub App를 등록합니다. GitHub App 등록에 원하는 리소스에 액세스하는 데 필요한 권한을 부여하세요. 자세한 내용은 GitHub 앱 등록GitHub 앱에 대한 권한 선택을(를) 참조하세요.

  2. GitHub App의 클라이언트 ID를 GitHub Actions 구성 변수로 저장합니다. 앱의 설정 페이지에서 클라이언트 ID를 찾을 수 있습니다. 클라이언트 ID는 앱 ID와 다릅니다. 설정 페이지로 이동하는 방법에 대한 자세한 내용은 GitHub App을 참조하세요. 구성 변수 저장에 대한 자세한 내용은 변수에 정보 저장 항목을 참조하세요.

  3. 앱에 대한 프라이빗 키를 생성합니다. 결과 파일의 내용을 비밀로 저장합니다. (-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----을(를) 포함한 파일의 전체 내용을 저장합니다.) 자세한 내용은 GitHub 앱에 대한 프라이빗 키 관리을(를) 참조하세요. 비밀을 저장하는 방법에 대한 자세한 내용은 GitHub Actions에서 비밀 사용을(를) 참조하세요.

  4. GitHub App을 올바른 계정에 설치하고 워크플로가 액세스해야 하는 모든 리포지토리에 대한 권한과 액세스 권한을 부여합니다. 자세한 내용은 고유한 GitHub 앱 설치을(를) 참조하세요.

  5. GitHub Actions 워크플로에서 API 요청을 만드는 데 사용할 수 있는 설치 액세스 토큰을 만듭니다.

    이렇게 하려면 다음 예제와 같이 GitHub 소유의 작업을 사용할 수 있습니다. 이 작업을 사용하지 않으려면 actions/create-github-app-token작업 을 포크하고 수정하거나 스크립트를 작성하여 워크플로에서 설치 토큰을 수동으로 만들 수 있습니다. 자세한 내용은 GitHub 앱 설치로 인증을(를) 참조하세요.

    다음 예제 워크플로에서는 이 actions/create-github-app-token 작업을 사용하여 설치 액세스 토큰을 생성합니다. 그런 다음, 워크플로는 토큰을 사용하여 을 통해 API 요청을 만듭니다 GitHub CLI.

    다음 워크플로에서 APP_CLIENT_ID를 클라이언트 ID를 저장한 구성 변수의 이름으로 바꿉니다. APP_PRIVATE_KEY를 앱 프라이빗 키가 보관된 비밀의 이름으로 바꿉니다.

YAML
on:
  workflow_dispatch:
jobs:
  demo_app_authentication:
    runs-on: ubuntu-latest
    steps:
      - name: Generate a token
        id: generate-token
        uses: actions/create-github-app-token@v3
        with:
          client-id: ${{ vars.APP_CLIENT_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Use the token
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
        run: |
          gh api octocat