참고
이 문서에서는 Dependabot를 사용하여 GitHub Actions 관련 작업을 자동화하는 방법을 설명합니다. Dependabot updates을 사용하여 GitHub Actions을 실행하는 방법에 대한 자세한 내용은 대신 GitHub Actions 실행기에서 Dependabot을 참조하세요.
GitHub Actions에서 종속성 업데이트를 위한 끌어오기 요청을 만들 때 Dependabot를 사용하여 자동화된 작업을 수행할 수 있습니다. 다음을 수행하려는 경우 이 유용한 정보를 찾을 수 있습니다.
-
Dependabot 끌어오기 요청(버전 업데이트 및 보안 업데이트)이 레이블 및 이름을 포함하여 작업 프로세스에 적합한 데이터로 생성되었는지 확인합니다.
-
워크플로를 실행하여 Dependabot 풀 리퀘스트(버전 업데이트 및 보안 업데이트)를 검토 프로세스로 보내거나 자동으로 병합합니다.
Dependabot 및 GitHub Actions 정보
중요
리포지토리에서 Dependabot가 활성화되면 항상 GitHub Actions에서 실행되며, Actions 정책 검사와 리포지토리 또는 조직 수준에서의 비활성화를 모두 우회합니다. 이렇게 하면 보안 및 버전 업데이트 워크플로가 Dependabot을 사용할 때도 항상 실행됩니다.
Dependabot 는 종속성을 최신 상태로 유지하기 위해 끌어오기 요청을 만듭니다. 이러한 끌어오기 요청을 만들 때 자동화된 작업을 수행하는 데 사용할 GitHub Actions 수 있습니다. 예를 들어, 추가 아티팩트를 가져오거나, 레이블을 추가하거나, 테스트를 실행하거나, 그 외에 풀 리퀘스트를 수정할 수 있습니다.
Dependabot은 끌어오기 요청 및 댓글에서 GitHub Actions 워크플로를 트리거할 수 있지만 다른 방식으로 처리되는 이벤트도 있습니다. 자세한 내용은 GitHub Actions의 Dependabot 문제 해결을 참조하세요.
다음은 GitHub Actions를 사용해 자동화할 수 있는 풀 리퀘스트의 몇 가지 일반적인 시나리오입니다.
풀 리퀘스트에 대한 메타데이터 가져오기
대부분의 자동화는 풀 리퀘스트 내용에 대한 정보를 알아야 합니다. 예를 들어, 종속성 이름, 프로덕션 종속성 여부, 그리고 주요, 부, 패치 업데이트인지 여부가 필요합니다. 작업을 사용하여 생성된 Dependabot끌어오기 요청에 의해 업데이트되는 종속성에 대한 정보를 검색할 수 있습니다.
Example:
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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 하는 다른 자동화 또는 심사 워크플로가 있는 경우 제공된 메타데이터에 따라 레이블을 할당하도록 작업을 구성할 수 있습니다.
모든 프로덕션 종속성 업데이트에 레이블을 지정하는 예시:
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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}}
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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 풀 요청을 자동으로 승인할 수 있습니다.
Example:
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot auto-approve
on: pull_request
permissions:
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot auto-approve
on: pull_request
permissions:
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
풀 리퀘스트에서 자동 병합 활성화
유지 관리자가 특정 풀 리퀘스트를 자동 병합 대상으로 표시할 수 있도록 하려면 GitHub의 자동 병합 기능을 사용할 수 있습니다. 브랜치 보호 규칙에서 요구하는 모든 테스트와 승인 요건이 성공적으로 충족되면, 이로써 해당 풀 리퀘스트를 병합할 수 있게 됩니다.
자세한 내용은 끌어오기 요청 자동 병합 및 브랜치 보호 규칙 관리을(를) 참조하세요.
대신 GitHub Actions 및 GitHub CLI을 사용할 수 있습니다. 다음은 my-dependency에 대한 모든 패치 업데이트를 자동으로 병합하는 예제입니다.
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot auto-merge
on: pull_request
permissions:
contents: write
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.
name: Dependabot auto-merge
on: pull_request
permissions:
contents: write
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
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}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
참고
상태 검사를 사용하여 **** 풀 리퀘스트를 테스트하는 경우, 해당 풀 리퀘스트의 대상 브랜치에 대해 Dependabot를 활성화해야 합니다. 이 분기 보호 규칙은 모든 필수 상태 검사를 통과하지 않는 한 끌어오기 요청이 병합되지 않도록 보장합니다. 자세한 내용은 브랜치 보호 규칙 관리을(를) 참조하세요.
대상 분기에서 병합 큐를 사용하는 경우 기본 제공 GITHUB_TOKEN은 풀 리퀘스트를 큐에 추가할 수 없습니다. 이 경우 병합 권한이 있는 personal access token 토큰 또는 GitHub App 토큰을 사용하여 워크플로를 인증하고 단계 대신 GITHUB_TOKEN``gh pr merge 사용해야 합니다.
Dependabot 및 GitHub Actions 정책
일반적으로 워크플로가 리포지토리에서 실행될 수 있는지 여부는 GitHub Actions 및 조직 또는 리포지토리 수준에서 사용하도록 설정되었는지 여부에 GitHub Actions 따라 달라집니다****. 이러한 컨트롤은 특히 외부 작업이 차단되거나 GitHub Actions 완전히 사용하지 않도록 설정된 경우 워크플로 실행을 제한할 수 있습니다.
그러나 리포지토리에서 Dependabot이(가) 활성화되면 해당 리포지토리의 워크플로는 항상 GitHub Actions에서 실행되며, Actions 정책 검사와 비활성화를 모두 우회합니다.
- Dependabot 워크플로는 작업 사용 안 함 또는 엔터프라이즈 정책 제한에 의해 차단되지 않습니다.
- 이러한 워크플로 내에서 참조되는 액션 역시 외부 액션이 허용되지 않는 경우에도 실행이 허용됩니다.
자세한 내용은 GitHub Actions 실행기에서 Dependabot을(를) 참조하세요.
실패한 워크플로 실행 조사
워크플로 실행이 실패하면 다음을 확인합니다.
- 올바른 작업자가 워크플로를 트리거하는 경우에만 워크플로를 실행합니다.
ref에 대해 올바른pull_request를 체크 아웃합니다.- 시크릿은 Dependabot 시크릿이 아니라 GitHub Actions 시크릿으로 사용할 수 있습니다.
- 올바른 권한이 있는
GITHUB_TOKEN이 있습니다.
쓰기 및 디버깅에 대한 자세한 내용은 GitHub Actions을 참조하세요.
워크플로 문제를 해결하는 데 도움이 되는 자세한 팁은 GitHub Actions의 Dependabot 문제 해결을 참조하세요.