기본적으로 Dependabot 은 각 종속성을 업데이트하는 새 끌어오기 요청을 엽니다. 보안 업데이트를 사용하도록 설정하면 취약한 종속성이 발견되면 새 끌어오기 요청이 열립니다. 하나 이상의 에코시스템에 대한 버전 업데이트를 구성할 때 종속성의 새 버전이 제공되면 새로운 끌어오기 요청이 열리며 해당 빈도는 dependabot.yml
파일에 정의되어 있습니다.
프로젝트에 많은 종속성이 있는 경우 검토 및 병합할 Dependabot 끌어오기 요청이 매우 많으므로 관리하기가 빠르게 어려워질 수 있습니다.
프로세스에 맞게 Dependabot 업데이트 끌어오기 요청을 최적화하기 위해 구현할 수 있는 몇 가지 사용자 지정 옵션이 있습니다.
schedule
을(를) 사용하여 Dependabot이 종속성의 최신 버전을 확인하는 빈도를 제어합니다.groups
을(를) 사용하여 의미 있는 업데이트를 우선 순위 지정합니다.
종속성 업데이트의 빈도 및 타이밍 제어
Dependabot은 구성 파일에서 설정한 빈도로 버전 업데이트 확인을 실행합니다(필수 필드인 schedule.interval
은(는) daily
, weekly
또는 monthly
로 설정해야 함).
기본적으로 Dependabot은 임의 시간을 할당하여 종속성 업데이트에 대한 끌어오기 요청을 확인하고 발생시켜 워크로드의 균형을 조정합니다.
그러나 산만을 줄이거나 버전 업데이트를 검토하고 해결하기 위한 시간과 리소스를 더 잘 구성하려면 빈도와 타이밍을 수정하는 것이 유용할 수 있습니다. 예를 들어 Dependabot은 매일 업데이트를 확인하는 대신 매주 실행하며, 팀의 심사 세션에 대해 끌어오기 요청이 발생하기 전에 끌어오기 요청이 발생하는 것을 확인할 수 있습니다.
schedule
을(를) 여러 옵션과 함께 사용하면 Dependabot이 버전 업데이트를 확인하는 빈도와 타이밍을 수정할 수 있습니다.
아래 예제 dependabot.yml
파일은 npm 구성을 변경하여 Dependabot이 매일 02:00 일본 표준시(UTC +09:00)에 npm 종속성에 대한 버전 업데이트를 확인해야 하도록 지정합니다.
# `dependabot.yml` file with # customized schedule for version updates version: 2 updates: # Keep npm dependencies up to date - package-ecosystem: "npm" directory: "/" # Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00) schedule: interval: "weekly" day: "tuesday" time: "02:00" timezone: "Asia/Tokyo"
# `dependabot.yml` file with
# customized schedule for version updates
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
# Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00)
schedule:
interval: "weekly"
day: "tuesday"
time: "02:00"
timezone: "Asia/Tokyo"
일정도 참조하세요.
의미 있는 업데이트 우선 순위 지정
groups
을(를) 사용하면 여러 종속성에 대한 업데이트를 단일 끌어오기 요청으로 통합할 수 있습니다. 이렇게 하면 더 높은 위험 업데이트에 검토 시간을 집중하고 부 버전 업데이트를 검토하는 데 소요된 시간을 최소화할 수 있습니다. 예를 들어 개발 종속성에 대한 부 또는 패치 업데이트에 대한 업데이트를 단일 끌어오기 요청으로 결합하고 코드베이스의 주요 영역에 영향을 주는 보안 또는 버전 업데이트를 위한 전용 그룹을 가질 수 있습니다.
개별 패키지 에코시스템당 그룹을 구성해야 하며, 다음 조건을 조합하여 패키지 에코시스템당 여러 그룹을 만들 수 있습니다.
- Dependabot 업데이트 형식:
applies-to
- 종속성 형식:
dependency-type
. - 종속성 이름:
patterns
및exclude-patterns
- 유의적 버전 관리 수준:
update-types
각 기준에 대해 지원되는 모든 값을 보려면 groups
을(를) 참조하세요.
아래 예제에서는 조건을 사용하여 종속성 그룹을 만드는 여러 가지 방법을 제공합니다.
예제 1: 세 가지 버전 업데이트 그룹
이 예제에서 dependabot.yml
파일은 다음과 같습니다.
- "
production-dependencies
", "development-dependencies
", "rubocop
"라는 세 개의 그룹을 만듭니다. patterns
및dependency-type
을(를) 사용하여 그룹의 종속성을 포함합니다.exclude-patterns
을(를) 사용하여 그룹에서 종속성(또는 여러 종속성)을 제외합니다.
version: 2
updates:
# Keep bundler dependencies up to date
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
groups:
production-dependencies:
dependency-type: "production"
development-dependencies:
dependency-type: "development"
exclude-patterns:
- "rubocop*"
rubocop:
patterns:
- "rubocop*"
결과적으로 다음이 수행됩니다.
- 버전 업데이트는 종속성 유형별로 그룹화됩니다.
- 패턴
rubocop*
과(와) 일치하는 개발 종속성은development-dependencies
그룹에서 제외됩니다. - 대신
rubocop*
과(와) 일치하는 개발 종속성은rubocop
그룹에 포함됩니다. 순서 지정으로 인해rubocop*
과(와) 일치하는 프로덕션 종속성이production-dependencies
그룹에 포함됩니다. - 또한,
applies-to
키가 없기 때문에 모든 그룹은 기본적으로 버전 업데이트에만 적용됩니다.
예제 2: 제외된 종속성이 있는 그룹화된 업데이트
이 예제에서 dependabot.yml
파일은 다음과 같습니다.
- 사용자 지정된 번들러 구성의 일부로 "
support-dependencies
"라는 그룹을 만듭니다. - 종속성(하나 이상의 종속성)의 이름과 일치하는
patterns
을(를) 사용하여 그룹에 종속성을 포함합니다. - 종속성(하나 이상의 종속성)의 이름과 일치하는
exclude-patterns
을(를) 사용하여 그룹에서 종속성을 제외합니다. applies-to: version-updates
이(가) 사용되므로 그룹화를 버전 업데이트에만 적용합니다.
version: 2
updates:
# Keep bundler dependencies up to date
- package-ecosystem: "bundler"
directories:
- "/frontend"
- "/backend"
- "/admin"
schedule:
interval: "weekly"
# Create a group of dependencies to be updated together in one pull request
groups:
# Specify a name for the group, which will be used in pull request titles
# and branch names
support-dependencies:
# Define patterns to include dependencies in the group (based on
# dependency name)
applies-to: version-updates # Applies the group rule to version updates
patterns:
- "rubocop" # A single dependency name
- "rspec*" # A wildcard string that matches multiple dependency names
- "*" # A wildcard that matches all dependencies in the package
# ecosystem. Note: using "*" may open a large pull request
# Define patterns to exclude dependencies from the group (based on
# dependency name)
exclude-patterns:
- "gc_ruboconfig"
- "gocardless-*"
결과적으로 다음이 수행됩니다.
- 와일드카드("*") 패턴으로 인해 번들러에 대한 대부분의 종속성은
support-dependencies
그룹으로 통합됩니다. gc_ruboconfig
및gocardless-*
와 일치하는 종속성은 그룹에서 제외되고, Dependabot은 이러한 종속성에 대한 단일 끌어오기 요청을 계속 발생시킵니다. 이러한 종속성에 대한 업데이트를 자세히 검토해야 하는 경우 이 기능이 유용할 수 있습니다.support-dependencies
의 경우, Dependabot은 버전 업데이트에 대한 끌어오기 요청만 발생시킵니다.
예제 3: 주요 업데이트에 대한 개별 끌어오기 요청 및 부/패치 업데이트에 대한 그룹화
이 예제에서 dependabot.yml
파일은 다음과 같습니다.
- "
angular
"라는 그룹을 만듭니다. - 종속성 이름과 일치하는
patterns
을(를) 사용하여 그룹에 종속성을 포함합니다. update-type
을(를) 사용하여 그룹에minor
또는patch
업데이트만 포함합니다.applies-to: version-updates
이(가) 사용되므로 그룹화를 버전 업데이트에만 적용합니다.
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
# Specify a name for the group, which will be used in pull request titles
# and branch names
angular:
applies-to: version-updates
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
결과적으로 다음이 수행됩니다.
- Dependabot은 부 또는 패치 업데이트가 있는 모든 Angular 종속성에 대해 그룹화된 끌어오기 요청을 만듭니다.
- 모든 주요 업데이트는 개별 끌어오기 요청을 통해 계속 발생합니다.
예제 4: 부/패치 업데이트에 대한 그룹화된 끌어오기 요청 및 주요 업데이트에 대한 끌어오기 요청 없음
이 예제에서 dependabot.yml
파일은 다음과 같습니다.
- "
angular
" 및 "minor-and-patch
"라는 두 개의 그룹을 만듭니다. applies-to
을(를) 사용하면 첫 번째 그룹은 버전 업데이트에만 적용되고 두 번째 그룹은 보안 업데이트에만 적용됩니다.update-type
을(를) 사용하여 두 그룹 모두에 대해minor
또는patch
업데이트만 포함합니다.ignore
조건을 사용하여@angular*
패키지의major
버전에 대한 업데이트를 제외합니다.
version: 2
updates:
# Keep npm dependencies up to date
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
groups:
angular:
applies-to: version-updates
patterns:
- "@angular*"
update-types:
- "minor"
- "patch"
minor-and-patch:
applies-to: security-updates
patterns:
- "@angular*"
update-types:
- "patch"
- "minor"
ignore:
- dependency-name: "@angular*"
update-types: ["version-update:semver-major"]
결과적으로 다음이 수행됩니다.
- Angular 종속성에 대한 부 버전 및 패치 버전 업데이트는 단일 끌어오기 요청으로 그룹화됩니다.
- Angular 종속성에 대한 부 및 패치 보안 업데이트도 단일 끌어오기 요청으로 그룹화됩니다.
- Dependabot은 Angular에 대한 주 업데이트에 대한 끌어오기 요청을 자동으로 열지 않습니다.