Dependabot가 종속성을 업데이트하기 위해 풀 리퀘스트를 생성할 때 GitHub Actions를 사용하여 자동화된 작업을 수행할 수 있습니다. 다음을 수행하려는 경우 이 유용한 정보를 찾을 수 있습니다.
-
Dependabot 끌어오기 요청(버전 업데이트 및 보안 업데이트)이 레이블 및 이름을 비롯한 작업 프로세스에 적합한 데이터로 생성되었는지 확인합니다.
-
검토 프로세스에 Dependabot 끌어오기 요청(버전 업데이트 및 보안 업데이트)을 보내거나 자동으로 병합하도록 워크플로를 트리거합니다.
엔터프라이즈에서 Dependabot 활성화하기
Dependabot 및 GitHub Actions 정보
중요
Dependabot이(가) 리포지토리에 활성화된 경우, 항상 GitHub Actions에서 실행되어 리포지토리 또는 조직 수준에서 작업 정책 검사 및 비활성화를 모두 우회합니다. 이렇게 하면 보안 및 버전 업데이트 워크플로가 Dependabot을 사용할 때도 항상 실행됩니다.
Dependabot는 종속성을 최신 상태로 유지하기 위해 풀 리퀘스트를 생성합니다. 이러한 풀 리퀘스트가 생성될 때 GitHub Actions를 사용하여 자동화된 작업을 수행할 수 있습니다. 예를 들어, 추가 아티팩트를 가져오거나, 레이블을 추가하거나, 테스트를 실행하거나, 그 외에 풀 리퀘스트를 수정할 수 있습니다.
Dependabot은 끌어오기 요청 및 댓글에서 GitHub Actions 워크플로를 트리거할 수 있지만 다른 방식으로 처리되는 이벤트도 있습니다. 자세한 내용은 GitHub Actions에서 Dependabot 문제 해결을 참조하세요.
다음은 GitHub Actions를 사용하여 자동화할 수 있는 풀 리퀘스트의 일반적인 몇 가지 시나리오입니다.
풀 리퀘스트에 대한 메타데이터 가져오기
대부분의 자동화는 풀 리퀘스트 내용에 대한 정보를 알아야 합니다. 예를 들어, 종속성 이름, 프로덕션 종속성 여부, 그리고 주요, 부, 패치 업데이트인지 여부가 필요합니다. Dependabot가 생성한 풀 리퀘스트에서 업데이트되는 종속성에 대한 정보를 가져오기 위해 액션을 사용할 수 있습니다.
예제:
# 이 워크플로는 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}}
풀 리퀘스트 자동 승인
워크플로에서 GitHub CLI를 사용하여 Dependabot 풀 리퀘스트를 자동으로 승인할 수 있습니다.
예제:
# 이 워크플로는 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 끌어오기 요청에 대해 대상 분기에 대해 병합하기 전에 상태 검사 필요를 사용하도록 설정해야 합니다. 이 분기 보호 규칙은 모든 필수 상태 검사를 통과하지 않는 한 끌어오기 요청이 병합되지 않도록 보장합니다. 자세한 내용은 브랜치 보호 규칙 관리을(를) 참조하세요.
Dependabot 및 GitHub Actions 정책
일반적으로 워크플로가 리포지토리에서 실행될 수 있는지 여부는 GitHub Actions 정책 확인과 GitHub Actions가 조직 또는 리포지토리 수준에서 활성화되었는지 여부에 따라 달라집니다. 이러한 제어는 워크플로 실행을 제한할 수 있으며, 특히 외부 액션이 차단되었거나 GitHub Actions가 완전히 비활성화된 경우에 그렇습니다.
그러나 Dependabot이 리포지토리에 활성화된 경우, 워크플로는 항상 GitHub Actions에서 실행되어 작업 정책 확인 및 비활성화를 모두 우회합니다.
- Dependabot 워크플로는 Actions 비활성화나 엔터프라이즈 정책 제한에 의해 차단되지 않습니다.
- 이러한 워크플로 내에서 참조되는 액션 역시 외부 액션이 허용되지 않는 경우에도 실행이 허용됩니다.
실패한 워크플로 실행 조사
워크플로 실행이 실패하면 다음을 확인합니다.
- 올바른 작업자가 워크플로를 트리거하는 경우에만 워크플로를 실행합니다.
-
`ref`에 대해 올바른 `pull_request`를 체크 아웃합니다. - 비밀은 GitHub Actions 비밀이 아닌 Dependabot 비밀에서 제공됩니다.
- 올바른 권한이 있는
GITHUB_TOKEN이 있습니다.
GitHub Actions 쓰기 및 디버깅에 대한 자세한 내용은 워크플로 작성을 참조하세요.
워크플로 문제를 해결하는 데 도움이 되는 자세한 팁은 GitHub Actions에서 Dependabot 문제 해결을 참조하세요.