본문으로 이동
메뉴 여닫기
  • 22 문서
  • 1 파일
  • 1 사용자
  • 216 편집
terraform-github-tacos
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Dependabot

terraform-github-tacos
더 많은 작업
이 문서는 Dependabot 문서를 번역한 것이며 번역은 100% 완료했습니다.

Dependabot이 시작한 워크플로 실행은 Actions 시크릿이 아니라 Dependabot 시크릿을 받습니다. 그래서 Dependabot 시크릿을 하나도 두지 않았다면 Dependabot 풀 리퀘스트의 플랜은 모두 실패합니다. 반면 사람이 그 풀 리퀘스트를 리뷰해서 시작된 실행은 Actions 시크릿을 받고, 액션도 이를 풀 리퀘스트 실행처럼 다룹니다. 그래서 이 문서가 권하는 방법은 Dependabot이 시작한 실행에서는 플랜을 건너뛰고, 머지할 수 있는 사람이 승인하면 플랜하는 것입니다.

on:
  pull_request:
  pull_request_review:
    types: [submitted]

jobs:
  plan:
    if: >-
      (github.event_name == 'pull_request' && github.event.pull_request.user.login != 'dependabot[bot]')
      || (github.event_name == 'pull_request_review'
      && github.event.review.state == 'approved'
      && github.event.pull_request.user.login == 'dependabot[bot]'
      && contains(fromJSON('["OWNER","MEMBER","COLLABORATOR"]'), github.event.review.author_association))
    # ...

  gate:
    # The same condition as the plan, or Dependabot's own pull_request run
    name: tofu gate
    if: >-
      always() && (github.event_name == 'pull_request'
      || (github.event_name == 'pull_request_review' && needs.plan.result != 'skipped'))
    # ...

Dependabot이 시작한 실행에서는 플랜을 건너뛰니 게이트가 실패하고, 풀 리퀘스트를 머지할 수 없습니다. 승인하면 같은 헤드 커밋에서 플랜하는 실행이 새로 시작되고, 그 실행의 게이트가 실패한 게이트를 대신합니다. Dependabot이 새 커밋을 올리면 다음 승인까지 게이트는 다시 실패합니다. 다른 리뷰로 시작된 실행은 할 일이 없고 게이트도 없습니다.

공개 저장소의 풀 리퀘스트는 누구나 리뷰할 수 있고, 플랜은 업데이트된 의존성을 시크릿과 함께 실행합니다. 그래서 머지할 수 있는 사람의 승인만 셉니다. 플랜에 나온 변경은 그래도 환경의 리뷰어를 기다립니다.

다른 방법

  • 플랜용 시크릿을 Dependabot 시크릿으로 복사하기. 예를 들어 github_dependabot_secret을 씁니다. 그러면 Dependabot 풀 리퀘스트가 알아서 플랜되지만, 아무도 변경 내용을 읽기 전에 업데이트된 의존성이 그 시크릿을 들고 실행됩니다. dependabot.yml에 쿨다운을 두면 갓 나온 릴리스를 며칠 피할 수 있습니다. 관리 권한이 있는 GitHub 앱 키처럼 플랜보다 훨씬 많은 일을 할 수 있는 시크릿은 빼세요.
  • 변경 내용을 읽은 뒤 Dependabot 브랜치에 커밋 푸시하기. 그 실행은 푸시한 사람의 것이라 Actions 시크릿을 받습니다. 다만 다른 사람이 푸시한 브랜치는 Dependabot이 더 이상 리베이스하지 않습니다.
  • Dependabot의 플랜을 건너뛰고 게이트를 통과시키기. 공유하는 것은 없지만 업데이트를 머지 전에 플랜하지 못합니다. 이 액션 자체를 업데이트할 때는 이러면 안 됩니다.

Dependabot 실행을 다시 돌려도 소용없습니다. 누가 다시 돌리든 Dependabot 시크릿을 그대로 받습니다.