GitHub Actions을 사용하여 Dependabot에서 종속성을 업데이트하기 위한 끌어오기 요청을 만들 때 자동화된 작업을 수행할 수 있습니다. 다음을 수행하려는 경우 이 유용한 정보를 찾을 수 있습니다.
-
Dependabot 끌어오기 요청(버전 업데이트 및 보안 업데이트)이 레이블 및 이름을 비롯한 작업 프로세스에 적합한 데이터로 생성되었는지 확인합니다.
-
검토 프로세스에 Dependabot 끌어오기 요청(버전 업데이트 및 보안 업데이트)을 보내거나 자동으로 병합하도록 워크플로를 트리거합니다.
엔터프라이즈에서 Dependabot 활성화하기
Dependabot 및 GitHub Actions 정보
중요
Dependabot이(가) 리포지토리에 활성화된 경우, 항상 GitHub Actions에서 실행되어 리포지토리 또는 조직 수준에서 작업 정책 검사 및 비활성화를 모두 우회합니다. 이렇게 하면 보안 및 버전 업데이트 워크플로가 Dependabot을 사용할 때도 항상 실행됩니다.
Dependabot은 종속성을 최신 상태로 유지하기 위한 끌어오기 요청을 만듭니다. 이러한 끌어오기 요청을 만들 때 GitHub Actions을 사용하여 자동화된 작업을 수행할 수 있습니다. 예를 들어 추가 아티팩트 가져오기, 레이블 추가, 테스트 실행 또는 끌어오기 요청 수정 등이 있습니다.
Dependabot은 끌어오기 요청 및 댓글에서 GitHub Actions 워크플로를 트리거할 수 있지만 다른 방식으로 처리되는 이벤트도 있습니다. 자세한 내용은 Troubleshooting Dependabot on GitHub Actions을(를) 참조하세요.
GitHub Actions을 사용하여 자동화할 수 있는 끌어오기 요청의 몇 가지 일반적인 시나리오는 다음과 같습니다.
끌어오기 요청에 대한 메타데이터 가져오기
대량의 자동화를 위해서는 끌어오기 요청의 내용에 대한 정보, 즉 종속성 이름, 프로덕션 종속성인지 여부, 주 업데이트인지, 부 업데이트인지, 패치 업데이트인지에 대한 정보를 알아야 합니다. 작업을 사용하여 Dependabot에서 생성된 끌어오기 요청에 의해 업데이트되는 종속성에 대한 정보를 검색할 수 있습니다.
예제:
{% data reusables.actions.actions-not-certified-by-github-comment %}
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
{% data reusables.actions.actions-not-certified-by-github-comment %}
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 레이블을 기반으로 하는 다른 자동화 또는 심사 워크플로가 있는 경우 제공된 메타데이터에 따라 레이블을 할당하도록 작업을 구성할 수 있습니다.
레이블을 사용하여 모든 프로덕션 종속성 업데이트에 플래그를 지정하는 예제:
{% data reusables.actions.actions-not-certified-by-github-comment %}
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}}
{% data reusables.actions.actions-not-certified-by-github-comment %}
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 끌어오기 요청을 자동으로 승인할 수 있습니다.
예제:
{% data reusables.actions.actions-not-certified-by-github-comment %}
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}}
{% data reusables.actions.actions-not-certified-by-github-comment %}
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에 대한 모든 패치 업데이트를 자동으로 병합하는 예제입니다.
{% data reusables.actions.actions-not-certified-by-github-comment %}
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}}
{% data reusables.actions.actions-not-certified-by-github-comment %}
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 쓰기 및 디버깅에 대한 자세한 내용은 워크플로 작성을(를) 참조하세요.
워크플로 문제를 해결하는 데 도움이 되는 자세한 팁은 Troubleshooting Dependabot on GitHub Actions을(를) 참조하세요.