Dependabot 풀 요청을 Github Actions와 자동으로 병합하는 방법은 무엇입니까?
릴리스 이후 내 리포지토리의 github에서 dependabot을 사용하려고 했습니다. 큰 확신없이 처음에. 원칙적으로 대단하다고 생각한 만큼 하루에 수십 개의 공개 PR이 만들어내는 노이즈가 정말 거슬렸습니다. 다양한 오픈 소스 프로젝트의 관리자로서, 나는 dependsabot PR 홍수의 피해자가 여러 번 있었습니다. 진짜 악몽.
어리석게도 구성하려고 노력하지 않았습니다. 최근에 한번 더 기회를 줘야겠다고 생각했습니다. 그래서 워크플로에 this configuration that allowed me to update my JS dependencies and used github actions을 설정했습니다.
version: 2
updates:
- package-ecosystem: 'npm' # See documentation for possible values
directory: '/' # Location of package manifests
open-pull-requests-limit: 25
schedule:
interval: 'daily'
- package-ecosystem: 'github-actions' # See documentation for possible values
directory: '/' # Location of package manifests
open-pull-requests-limit: 25
schedule:
interval: 'daily'
거짓말이 아닙니다. 이 구성을 사용하면 Gatsby와 함께 개발한 이 블로그Dependabot에서 주당 최대 20개의 풀 요청을 열었습니다.
⚠️ 제한
처음에 모든 종속성 업데이트와 함께 모든 PR이 열리는 것을 보면 매우 만족합니다. 그러나 이것을 매주 관리하는 것은 정말 시간이 많이 걸립니다. 또한 이러한 PR을 체인으로 병합할 때 병합을 방지하는
package.json
파일에서 캐스케이드 충돌이 발생합니다 😒. 따라서 종종 dependsabot이 자체적으로 PR을 리베이스하여 테스트가 통과할 때까지 기다린 다음 풀 요청이 병합될 때까지 기다려야 합니다.♻️ 자동으로 합치자!
이 블로그에서 E2E 테스트를 설정한 후 지속적 통합 워크플로에서 제공하는 확인 ✅은 매우 안심이 됩니다. You can have a look at this article which describes how I set up these tests
이 자동화를 통해 나는 dependsabot 업데이트 PR을 병합할 때 매우 조용합니다. 그래서 "E2E 테스트를 통과한 PR을 자동으로 병합하지 않는 이유는 무엇입니까?"라고 생각했습니다.
이를 위해 지속적 통합 워크플로우에서 이 방식으로 구성된 새 작업을 추가하기만 하면 되었습니다.
dependabot:
name: 'Dependabot'
needs: [build, e2e] # After the E2E and build jobs, if one of them fails, it won't merge the PR.
runs-on: ubuntu-latest
if: ${{ github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'}} # Detect that the PR author is dependabot
steps:
- name: Enable auto-merge for Dependabot PRs
run: gh pr merge --auto --merge "$PR_URL" # Use Github CLI to merge automatically the PR
env:
PR_URL: ${{github.event.pull_request.html_url}}
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
If you want to see the real example, take a look at this blog workflow.
👮결국 정말 안전한가요?
Sdependabot이 무엇인지 설명하지 않고 이 모든 것이 더 많은 보안을 가져올 수 있다고 생각할 수 있습니다. 실제로 보안 패치가 제공되는 즉시 수동으로 조작할 필요 없이 자동으로 적용되고 내 블로그에 배포됩니다.
Dependabot의 PR을 병합할 수 있는 가능성이 제한되어 자동화를 설정하면 상황이 개선된다고 말할 수 있습니다. 내 사이트에서 너무 중요한 것을 깨뜨리지 않도록 하는 좋은 E2E 테스트 전략은 정말 편리해 보입니다.
그러나 결국 누가 업데이트를 제어하고 업데이트에 포함된 내용은 무엇입니까? 악성 코드가 포함되어 있지 않은지 누가 확인합니까? 이 블로그는 저에게 샌드박스가 아니므로 크게 문제가 되지 않습니다. 따라서 설정하기 전에 신중하게 생각하십시오.
Reference
이 문제에 관하여(Dependabot 풀 요청을 Github Actions와 자동으로 병합하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/slashgear_/how-to-automatically-merge-dependabot-pull-requests-with-github-actions--30pe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)