Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.
GitHub AE는 현재 제한된 릴리스에 있습니다.

GitHub Actions를 통한 Dependabot 자동화

GitHub Actions를 사용하여 일반적인 Dependabot 관련 작업을 자동화하는 방법의 예입니다.

이 기능을 사용할 수 있는 사용자

People with write permissions to a repository can configure GitHub Actions to respond to Dependabot-created pull requests.

Dependabot 및 GitHub Actions 정보

Dependabot은 종속성을 최신 상태로 유지하기 위해 끌어오기 요청을 만들고, 해당 끌어오기 요청이 생성될 때 GitHub Actions를 사용하여 자동화된 작업을 수행할 수 있습니다. 예를 들어 추가 아티팩트 가져오기, 레이블 추가, 테스트 실행 또는 끌어오기 요청 수정 등이 있습니다.

이벤트에 응답

Dependabot은 끌어오기 요청 및 댓글에서 GitHub Actions 워크플로를 트리거할 수 있지만 다른 방식으로 처리되는 이벤트도 있습니다.

, , , push``deployment_status pull_request_review_comment``deployment``pull_request_review``create및 이벤트를 사용하여 pull_requestDependabot(github.actor == 'dependabot[bot]')에서 시작한 워크플로의 경우 다음 제한 사항이 적용됩니다.

  • GITHUB_TOKEN 에는 기본적으로 읽기 전용 권한이 있습니다.
  • 비밀은 Dependabot 비밀에서 채워집니다. GitHub Actions 비밀을 사용할 수 없습니다.

이벤트를 사용하여 pull_request_target Dependabot(github.actor == 'dependabot[bot]')에서 시작한 워크플로의 경우 끌어오기 요청의 기본 참조가 Dependabot(github.actor == 'dependabot[bot]')GITHUB_TOKEN에 의해 만들어진 경우 는 읽기 전용이며 비밀을 사용할 수 없습니다.

자세한 내용은 “GitHub Actions 및 워크플로 보안 유지: pwn 요청 방지”를 참조하세요.

수동으로 워크플로 다시 실행

실패한 Dependabot 워크플로를 수동으로 다시 실행할 수도 있으며, 이 워크플로는 읽기-쓰기 토큰과 비밀에 대한 액세스 권한을 통해 실행됩니다. 실패한 워크플로를 수동으로 다시 실행하기 전에 업데이트되는 종속성을 확인하여 변경 사항으로 인해 악의적이거나 의도하지 않은 동작이 발생하지 않도록 해야 합니다.

일반적인 Dependabot 자동화

다음은 GitHub Actions를 사용하여 자동화할 수 있는 일반적인 시나리오입니다.

끌어오기 요청에 대한 메타데이터 가져오기

대량의 자동화를 사용하려면 끌어오기 요청의 내용에 대한 정보, 즉 종속성 이름이 무엇인지, 프로덕션 종속성인지, 주요 업데이트인지, 사소한 업데이트인지 또는 패치 업데이트인지를 알고 있어야 합니다.

dependabot/fetch-metadata 작업은 사용자에게 모든 정보를 제공합니다.

name: Dependabot fetch metadata
on: pull_request

permissions:
  pull-requests: write
  issues: write
  repository-projects: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: ${{ github.actor == 'dependabot[bot]' }}
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@v1
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      # The following properties are now available:
      #  - steps.metadata.outputs.dependency-names
      #  - steps.metadata.outputs.dependency-type
      #  - steps.metadata.outputs.update-type

자세한 내용은 dependabot/fetch-metadata 리포지토리를 참조하세요.

끌어오기 요청에 레이블 지정

GitHub 레이블을 기반으로 하는 다른 자동화 또는 심사 워크플로가 있는 경우 제공된 메타데이터에 따라 레이블을 할당하도록 작업을 구성할 수 있습니다.

예를 들어 레이블을 사용하여 모든 프로덕션 종속성 업데이트에 플래그를 지정하려는 경우:

name: Dependabot auto-label
on: pull_request

permissions:
  pull-requests: write
  issues: write
  repository-projects: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: ${{ github.actor == 'dependabot[bot]' }}
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@v1
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Add a label for all production dependencies
        if: ${{ steps.metadata.outputs.dependency-type == 'direct:production' }}
        run: gh pr edit "$PR_URL" --add-label "production"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}

끌어오기 요청 승인

Dependabot 끌어오기 요청을 자동으로 승인하려면 워크플로에서 GitHub CLI를 사용할 수 있습니다.

name: Dependabot auto-approve
on: pull_request

permissions:
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: ${{ github.actor == 'dependabot[bot]' }}
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@v1
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Approve a PR
        run: gh pr review --approve "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

끌어오기 요청에서 자동 병합 사용

유지 관리자가 자동 병합에 대한 특정 끌어오기 요청을 표시하도록 허용하려면 GitHub의 자동 병합 기능을 사용할 수 있습니다. 이렇게 하면 분기 보호 규칙에 필요한 테스트 및 승인이 성공적으로 충족될 때 끌어오기 요청을 병합할 수 있습니다. 자세한 내용은 "끌어오기 요청 자동 병합" 및 "분기 보호 규칙 관리.

참고: 상태 검사를 사용하여 끌어오기 요청을 테스트하는 경우 Dependabot 끌어오기 요청에 대한 대상 분기 를 병합하기 전에 상태 검사 통과 필요 를 사용하도록 설정해야 합니다. 이 분기 보호 규칙은 필요한 상태 검사가 모두 통과하지 않는 한 끌어오기 요청이 병합되지 않도록 합니다. 자세한 내용은 "분기 보호 규칙 관리"을 참조하세요.

대신 GitHub Actions 및 GitHub CLI를 사용할 수 있습니다. 다음은 my-dependency에 대한 모든 패치 업데이트를 자동으로 병합하는 예제입니다.

name: Dependabot auto-merge
on: pull_request

permissions:
  contents: write
  pull-requests: write

jobs:
  dependabot:
    runs-on: ubuntu-latest
    if: ${{ github.actor == 'dependabot[bot]' }}
    steps:
      - name: Dependabot metadata
        id: metadata
        uses: dependabot/fetch-metadata@v1
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
      - name: Enable auto-merge for Dependabot PRs
        if: ${{contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'}}
        run: gh pr merge --auto --merge "$PR_URL"
        env:
          PR_URL: ${{github.event.pull_request.html_url}}
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

실패한 워크플로 실행 문제 해결

워크플로 실행이 실패하면 다음을 확인합니다.

  • 올바른 작업자가 워크플로를 트리거하는 경우에만 워크플로를 실행합니다.
  • pull_request에 대해 올바른 ref를 체크 아웃합니다.
  • 비밀은 GitHub Actions 비밀이 아닌 Dependabot 비밀에서 제공됩니다.
  • 올바른 권한이 있는 GITHUB_TOKEN이 있습니다.

GitHub Actions을(를) 작성하고 디버깅하는 방법에 대한 자세한 내용은 "Github Actions 알아보기.