기본적으로 Dependabot 은 각 종속성을 업데이트하는 새 끌어오기 요청을 엽니다. 보안 업데이트를 사용하도록 설정하면 취약한 종속성이 발견되면 새 끌어오기 요청이 열립니다. 하나 이상의 에코시스템에 대한 버전 업데이트를 구성할 때 종속성의 새 버전이 제공되면 새로운 끌어오기 요청이 열리며 해당 빈도는 dependabot.yml
파일에 정의되어 있습니다.
프로젝트에 많은 종속성이 있는 경우 검토 및 병합할 Dependabot 끌어오기 요청이 매우 많으므로 관리하기가 빠르게 어려워질 수 있습니다.
프로세스에 맞게 Dependabot 업데이트 끌어오기 요청을 최적화하기 위해 구현할 수 있는 몇 가지 사용자 지정 옵션이 있습니다.
schedule
을(를) 사용하여 Dependabot이 종속성의 최신 버전을 확인하는 빈도를 제어합니다.groups
을(를) 사용하여 의미 있는 업데이트를 우선 순위 지정합니다.
종속성 업데이트의 빈도 및 타이밍 제어
Dependabot은 구성 파일에서 설정한 빈도로 버전 업데이트 확인을 실행합니다. 여기서 필수 필드인 schedule.interval
은 daily
, weekly
, monthly
, quarterly
, semiannually
, yearly
, cron
으로 설정되어야 합니다(cronjob 참조).
기본적으로 Dependabot은 임의 시간을 할당하여 종속성 업데이트에 대한 끌어오기 요청을 확인하고 발생시켜 워크로드의 균형을 조정합니다.
그러나 산만을 줄이거나 버전 업데이트를 검토하고 해결하기 위한 시간과 리소스를 더 잘 구성하려면 빈도와 타이밍을 수정하는 것이 유용할 수 있습니다. 예를 들어 Dependabot은 매일 업데이트를 확인하는 대신 매주 실행하며, 팀의 심사 세션에 대해 끌어오기 요청이 발생하기 전에 끌어오기 요청이 발생하는 것을 확인할 수 있습니다.
종속성 업데이트의 빈도 및 타이밍 수정
schedule
을 여러 옵션과 함께 사용하면 Dependabot이 버전 업데이트를 확인하는 빈도와 타이밍을 수정할 수 있습니다.
아래 예제 dependabot.yml
파일은 npm 구성을 변경하여 Dependabot이 매주 화요일 오전 2: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"
일정도 참조하세요.
종속성 업데이트의 휴지 기간 설정
cooldown
을 여러 옵션과 함께 사용하면 Dependabot이 버전 업데이트를 위한 끌어오기 요청을 생성하는 시점을 제어할 수 있습니다.
아래 예시 dependabot.yml
파일은 종속성 requests
, numpy
, pandas
또는 django
접두사를 갖는 이름의 종속성에 휴지 기간이 적용되는 반면, pandas
라는 이름의 종속성(정확히 일치하는 항목)은 exclude 목록을 통해 제외되는 예시를 보여 줍니다.
version: 2 updates: - package-ecosystem: "pip" directory: "/" schedule: interval: "daily" cooldown: default-days: 5 semver-major-days: 30 semver-minor-days: 7 semver-patch-days: 3 include: - "requests" - "numpy" - "pandas*" - "django" exclude: - "pandas"
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
cooldown:
default-days: 5
semver-major-days: 30
semver-minor-days: 7
semver-patch-days: 3
include:
- "requests"
- "numpy"
- "pandas*"
- "django"
exclude:
- "pandas"
- 휴지 일수는 1~90일 사이여야 합니다.
cooldown
과 함께 사용할 수 있는include
및exclude
목록에서 허용되는 최대 항목 제한은 각각 150개입니다.
참고 항목
휴지 기간 동안 모든 종속성을 고려하려면 다음과 같은 방법을 수행할 수 있습니다.
- 모든 종속성에 휴지 기간을 적용하는
include
옵션을 생략합니다. include
의"*"
를 사용하여 모든 항목에 휴지 기간 설정을 적용합니다. 휴지 기간 설정에서 특정 종속성****만 제외하려면,exclude
를 사용해 보세요.
대부분의 패키지 관리자는 SemVer를 지원합니다. 휴지 기간의 종속성 새 버전의 업데이트는 다음과 같이 연기됩니다.
- 주요 업데이트: 30일 연기됨(
semver-major-days: 30
) - 부 업데이트: 7일 연기됨(
semver-minor-days: 7
) - 패치 업데이트: 3일 연기됨(
semver-patch-days: 3
)
cooldown
을 참조하세요.
의미 있는 업데이트 우선 순위 지정
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에 대한 주 업데이트에 대한 끌어오기 요청을 자동으로 열지 않습니다.