Skip to main content

프로세스에 맞게 Dependabot 끌어오기 요청 사용자 지정

Dependabot 풀 리퀘스트를 사용자 고유의 내부 워크플로에 더 잘 맞게 조정하는 방법을 알아봅니다.

누가 이 기능을 사용할 수 있나요?

Users with write access

Dependabot 끌어오기 요청을 자체 내부 프로세스에 더 잘 맞도록 사용자 지정할 수 있는 다양한 방법이 있습니다.

예를 들어 Dependabot의 풀 리퀘스트를 CI/CD 파이프라인에 통합할 때 풀 리퀘스트에 사용자 지정 레이블을 적용할 수 있으며, 그런 다음 이를 사용해 액션 워크플로를 트리거할 수 있습니다.

패키지 에코시스템별로 조합하여 사용할 수 있는 여러 가지 사용자 지정 옵션이 있습니다.

담당자 자동 추가

기본적으로 Dependabot는 담당자 지정 없이 풀 리퀘스트를 생성합니다.

지정된 보안 팀에 끌어오기 요청을 자동으로 할당하려면 assignees를 사용하여 패키지 에코시스템별로 이러한 값을 설정할 수 있습니다.

아래의 예시 dependabot.yml 파일은 npm에 대한 버전 및 보안 업데이트로 열린 모든 끌어오기 요청에 다음이 있도록 npm 구성을 변경합니다.

  • 개인("user-name")이 끌어오기 요청에 자동으로 할당되었습니다.
YAML
# `dependabot.yml` file with
#  assignee for all npm pull requests

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise all npm pull requests with assignees
    assignees:
      - "user-name"

검토자 자동 추가

기본적으로 Dependabot는 검토자 지정 없이 풀 리퀘스트를 생성합니다.

프로젝트의 보안 업데이트가 적절한 팀에 의해 신속하게 처리되도록 하려면 CODEOWNERS 파일을 사용하여 Dependabot 풀 리퀘스트에 검토자를 자동으로 추가할 수 있습니다. 코드 소유자 정보을(를) 참조하세요.

사용자 지정 레이블을 사용하여 풀 리퀘스트에 레이블을 지정합니다.

기본적으로 Dependabot는 dependencies 레이블이 지정된 풀 리퀘스트를 생성합니다.

Dependabot 또한 끌어오기 요청에 에코시스템 레이블(예: java, npm또는 github-actions)을 적용합니다. Dependabot는 필터링 및 분류 작업을 개선하기 위해 단일 에코시스템 업데이트를 포함한 모든 풀 리퀘스트에 dependencies 레이블과 에코시스템 레이블을 모두 추가합니다.

Dependabot 는 리포지토리에 아직 없는 경우 끌어오기 요청에 적용되는 기본 레이블을 만듭니다. 기본 설정 대신 사용자 지정 레이블을 사용하려면 각 패키지 에코시스템에 해당하는 파일의 labels 옵션을 설정하십시오. 그렇게 하면 기본 설정이 변경됩니다. 자세한 내용은 레이블 관리labels을(를) 참조하세요.

SemVer(의미 체계 버전) 레이블이 리포지 Dependabot 토리에 있는 경우 자동으로 적용하여 버전 업데이트 유형(major``minor또는patch)을 나타냅니다. 이러한 레이블은 정의한 사용자 지정 레이블 외에 적용됩니다.

labels을(를) 사용하면 기본 레이블을 재정의하고 패키지 에코시스템당 사용자 지정 레이블을 지정할 수 있습니다. 예를 들어 다음을 수행하려는 경우에 유용합니다.

  • 레이블을 사용하여 특정 끌어오기 요청에 우선 순위를 할당합니다.
  • 레이블을 사용하여 프로젝트 보드에 끌어오기 요청을 자동으로 추가하는 등의 다른 워크플로를 트리거합니다.

아래의 예시 dependabot.yml 파일은 npm에 대한 버전 및 보안 업데이트로 열린 모든 끌어오기 요청에 사용자 지정 레이블이 있도록 npm 구성을 변경합니다.

YAML
# `dependabot.yml` file with
# customized npm configuration

version: 2
updates:
  # Keep npm dependencies up to date
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise all npm pull requests with custom labels
    labels:
      - "npm dependencies"
      - "triage-board"

기본이 아닌 분기에서 버전 업데이트를 확인하는 데 target-branch를 사용하지 않는 한 이 옵션을 설정하면 이 패키지 관리자의 매니페스트 파일에 대한 보안 업데이트 끌어오기 요청에도 영향을 줍니다.

labels 을 참조하세요.

메시지를 커밋하는 접두사 추가

기본적으로 Dependabot 커밋 메시지 기본 설정을 검색하고 유사한 패턴을 사용하려고 시도합니다. 또한 Dependabot 커밋 메시지에 따라 끌어오기 요청의 제목을 채웁니다.

특정 패키지 에코시스템에 대한 Dependabot'커밋 메시지(및 끌어오기 요청 제목)에 고유한 접두사를 지정할 수 있습니다. 예를 들어, 커밋 메시지나 끌어오기 요청 제목을 처리하는 자동화를 실행하는 경우 이 기능이 유용할 수 있습니다.

기본 설정을 명시적으로 지정하려면 다음 지원 옵션과 함께 commit-message을(를) 사용합니다.

  • prefix:
    • 모든 커밋 메시지의 접두사를 지정합니다.
    • 접두사는 끌어오기 요청 제목의 시작 부분에도 추가됩니다.
  • prefix-development:
    • 패키지 관리자나 에코시스템에서 정의한대로 개발 종속성을 업데이트하는 모든 커밋 메시지에 대한 별도의 접두사를 지정합니다.
    • bundler, composer, mix, maven, npm, pipuv 지원됨.
  • include: "scope":
    • 커밋에서 업데이트되는 종속성 유형(deps 또는 deps-dev)이 접두사 뒤에 오도록 지정합니다.

아래 예제에서는 패키지 에코시스템별로 조정된 몇 가지 다양한 옵션을 보여줍니다.

YAML
# Customize commit messages

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    commit-message:
      # Prefix all commit messages with "npm: "
      prefix: "npm"

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
    commit-message:
      # Prefix all commit messages with "[docker] " (no colon, but a trailing whitespace)
      prefix: "[docker] "

  - package-ecosystem: "composer"
    directory: "/"
    schedule:
      interval: "weekly"
    # Prefix all commit messages with "Composer" plus its scope, that is, a
    # list of updated dependencies
    commit-message:
      prefix: "Composer"
      include: "scope"

  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    # Include a list of updated dependencies
    # with a prefix determined by the dependency group
    commit-message:
      prefix: "pip prod"
      prefix-development: "pip dev"

기본이 아닌 분기에서 버전 업데이트를 확인하는 데 target-branch를 사용하지 않는 한 이 옵션을 설정하면 이 패키지 관리자의 매니페스트 파일에 대한 보안 업데이트 끌어오기 요청에도 영향을 줍니다.

commit-message 을 참조하세요.

끌어오기 요청을 마일스톤과 연결

마일스톤은 프로젝트 목표나 릴리스에 대한 끌어오기 요청(또는 문제) 그룹의 진행률을 추적하는 데 도움이 됩니다. 이 Dependabot옵션을 사용하여 milestone 종속성 업데이트에 대한 끌어오기 요청을 특정 중요 시점과 연결할 수 있습니다.

해당 레이블이 아닌 마일스톤의 숫자 식별자를 지정해야 합니다. 숫자 식별자를 찾으려면 milestone 뒤에 있는 페이지 URL의 마지막 부분을 확인합니다. 예를 들어, https://github.com/<org>/<repo>/milestone/3의 경우 "3"은(는) 마일스톤의 숫자 식별자입니다.

YAML
# Specify a milestone for pull requests

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # Associate pull requests with milestone "4"
    milestone: 4

기본이 아닌 분기에서 버전 업데이트를 확인하는 데 target-branch를 사용하지 않는 한 이 옵션을 설정하면 이 패키지 관리자의 매니페스트 파일에 대한 보안 업데이트 끌어오기 요청에도 영향을 줍니다.

milestone 마일스톤 정보도 참조하세요.

끌어오기 요청 분기 이름 사용자 지정

Dependabot 는 각 끌어오기 요청에 대한 분기를 생성합니다. 각 분기 이름에는 dependabot이(가) 포함되며, 패키지 관리자 이름과 업데이트할 종속성도 포함됩니다. 기본적으로 분기 이름의 이러한 부분은 / 기호로 구분됩니다(예:).

  • dependabot/npm_and_yarn/next_js/acorn-6.4.1

pull-request-branch-name 옵션을 사용하면 separator, prefix, max-length, word-separator, branch-name-case, 및 template 매개변수로 브랜치 이름을 사용자 지정할 수 있습니다. 모든 옵션은 구성 가능하며, 모든 옵션을 결합할 수 있습니다. 각 매개 변수의 전체 참조는 .를 참조하세요 pull-request-branch-name.

서식 옵션 결합

시스템 요구 사항을 충족하는 분기 이름을 결합하고 생성할 수 separator``word-separator``branch-name-case``max-length있습니다.template 예를 들어 Docker 태그 호환성, Azure Container Registry 이름 지정 또는 Kubernetes 분기 길이 제한이 있습니다.

다른 옵션과 함께 설정되면 template 서식 지정이 템플릿 렌더링 후 후 처리로 적용됩니다. 구분 기호 바꾸기, 단어 구분 기호 바꾸기, 대/소문자 변환, 최대 길이 잘림 순서입니다.

YAML
# Combine template with formatting options

version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      template: "{prefix}/{package_manager}/{dependency}-{version}"
      separator: "-"
      word-separator: "-"
      branch-name-case: "lowercase"
      max-length: 80
  • 이전 (기본값): dependabot/npm_and_yarn/Lodash-4.17.21
  • 이후 (위 구성과 함께): dependabot-npm-and-yarn-lodash-4.17.21

분기 이름이 초과 max-length되면 고유성을 유지하기 위해 해시 접미사로 잘립니다.

다중 에코시스템 그룹이 있는 전체 예제

다음은 dependabot.yml 다중 에코시스템 그룹 구성을 포함하여 다양한 에코시스템에서 사용 가능한 모든 옵션을 보여 줍니다.

YAML
# Full example demonstrating all branch name options

version: 2

multi-ecosystem-groups:
  infrastructure:
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      template: "{prefix}/infra/{name}"
      word-separator: "-"
      branch-name-case: "lowercase"

updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      separator: "-"
      word-separator: "-"
      branch-name-case: "lowercase"
    groups:
      frontend-deps:
        patterns: ["react*", "next*"]

  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "monthly"
    pull-request-branch-name:
      template: "{prefix}/{package_manager}/{dependency}-{version}"
      max-length: 60

  - package-ecosystem: "pip"
    directory: "/backend"
    schedule:
      interval: "weekly"
    pull-request-branch-name:
      prefix: "deps"
      branch-name-case: "lowercase"
    groups:
      django-deps:
        patterns: ["django*"]

  # These entries participate in the "infrastructure" multi-ecosystem group
  - package-ecosystem: "docker"
    directory: "/infra"
    patterns: ["nginx", "redis", "postgres"]
    multi-ecosystem-group: "infrastructure"

  - package-ecosystem: "terraform"
    directory: "/infra"
    patterns: ["hashicorp/*"]
    multi-ecosystem-group: "infrastructure"

이 구성은 다음 분기 이름을 생성합니다.

시나리오Strategy지점 이름
lodash npm 업데이트솔로dependabot-npm-and-yarn-lodash-4.17.21
npm frontend-deps 그룹 업데이트그룹화됨dependabot-npm-and-yarn-frontend-deps-fc93691fd4
nginx solo Docker 업데이트솔로dependabot/docker/nginx-1.25.0
pip Django 업데이트솔로deps/pip/django-4.2.1
pip django-deps 그룹 업데이트그룹화됨deps/pip/django-deps-a1b2c3d4e5
에코시스템 간 인프라 그룹(Docker + Terraform)다중 에코시스템dependabot/infra/infrastructure-fc93691fd4

참고

다중 에코시스템 그룹의 경우: * pull-request-branch-name 항목의 multi-ecosystem-groups은 그룹화된 교차 에코시스템 PR 브랜치 이름을 제어합니다.

  • 지정하는 개별 updates 항목에는 고유한 multi-ecosystem-group항목이 있을 수 없습니다.pull-request-branch-name 그룹 수준 구성이 우선하며 해당 항목에 사용되는 유일한 구성입니다.

{package_manager} 는 그룹이 여러 에코시스템에 걸쳐 있기 때문에 다중 에코시스템 그룹 템플릿에서 사용할 수 없습니다.

  • 콘텐츠 다이제스트는 고유성을 보장하기 위해 항상 다중 에코시스템 그룹 분기에 자동으로 추가됩니다.

분기 이름 구성이 적용되는 방법

  • 구성은 업데이트별 항목입니다. 각 독립 실행형 package-ecosystem 항목에는 자체 분기 이름 구성이 있을 수 있습니다. 다중 에코시스템 그룹에 할당된 항목은 그룹 수준 구성을 대신 사용합니다.
  • 기존 PR은 영향을 받지 않습니다. 변경 내용은 새로 만든 PR에만 적용됩니다.
  • 기본 동작은 변경되지 않습니다. 옵션을 구성하지 않으면 분기 이름은 현재와 동일하게 유지됩니다.

기본이 아닌 분기에서 버전 업데이트를 확인하는 데 target-branch를 사용하지 않는 한 이 옵션을 설정하면 이 패키지 관리자의 매니페스트 파일에 대한 보안 업데이트 끌어오기 요청에도 영향을 줍니다.

기본 분기가 아닌 분기에 대한 끌어오기 요청 대상 지정

기본적으로 Dependabot는 기본 브랜치의 매니페스트 파일을 확인하고 기본 브랜치에 대한 업데이트에 대해 풀 리퀘스트를 생성합니다.

일반적으로 Dependabot의 검사 및 업데이트를 기본 분기에서 유지하는 것이 가장 합리적입니다. 그러나 다른 대상 분기를 지정해야 하는 경우가 있을 수 있습니다. 예를 들어 팀의 프로세스상 업데이트를 먼저 프로덕션이 아닌 브랜치에서 테스트하고 검증해야 하는 경우, target-branch에서 풀 리퀘스트를 생성할 다른 브랜치를 지정하기 위해 Dependabot를 사용할 수 있습니다.

참고

Dependabot 는 기본 브랜치에 대해서만 보안 업데이트용 풀 리퀘스트를 생성합니다. target-branch을(를) 사용하면 해당 패키지 관리자의 모든 구성 설정은 버전 업데이트에만 적용되고 보안 업데이트에는 적용되지 않습니다.

YAML
# Specify a non-default branch for pull requests for pip

version: 2
updates:
  - package-ecosystem: "pip"
    directory: "/"
    schedule:
      interval: "weekly"
    # Raise pull requests for version updates
    # to pip against the `develop` branch
    target-branch: "develop"
    # Labels on pull requests for version updates only
    labels:
      - "pip dependencies"

  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      # Check for npm updates on Sundays
      day: "sunday"
    # Labels on pull requests for security and version updates
    labels:
      - "npm dependencies"

target-branch 을 참조하세요.