{"meta":{"title":"Dependabot의 버전 업데이트를 위한 끌어오기 요청 최적화하기","intro":"Dependabot 끌어오기 요청을 효율적으로 관리하고 간소화하는 방법을 알아봅니다.","product":"보안 및 코드 품질","breadcrumbs":[{"href":"/ko/code-security","title":"보안 및 코드 품질"},{"href":"/ko/code-security/tutorials","title":"Tutorials"},{"href":"/ko/code-security/tutorials/secure-your-dependencies","title":"종속성 보호"},{"href":"/ko/code-security/tutorials/secure-your-dependencies/optimizing-pr-creation-version-updates","title":"PR 만들기 최적화"}],"documentType":"article"},"body":"# Dependabot의 버전 업데이트를 위한 끌어오기 요청 최적화하기\n\nDependabot 끌어오기 요청을 효율적으로 관리하고 간소화하는 방법을 알아봅니다.\n\n기본적으로 Dependabot 각 종속성을 업데이트하는 새 끌어오기 요청을 엽니다. 보안 업데이트를 사용하도록 설정하면 취약한 종속성이 발견되면 새 끌어오기 요청이 열립니다. 하나 이상의 에코시스템에 대한 버전 업데이트를 구성할 때 종속성의 새 버전이 제공되면 새로운 끌어오기 요청이 열리며 해당 빈도는 `dependabot.yml` 파일에 정의되어 있습니다.\n\n프로젝트에 많은 종속성이 있는 경우 매우 많은 수의 Dependabot 풀 요청을 검토하고 병합해야 하므로, 이를 관리하는 것이 빠르게 어려워질 수 있습니다.\n\n다음과 같이 프로세스에 맞게 업데이트 끌어오기 요청을 최적화 Dependabot 하기 위해 구현할 수 있는 몇 가지 사용자 지정 옵션이 있습니다.\n\n* ```\n            **빈도를 제어하여** `schedule`를 통해 Dependabot이 종속성의 최신 버전을 확인하는 주기를 관리합니다.\n  ```\n* 의미 있는 업데이트를 우선순위로 설정합니다 **를 사용하여**`groups`.\n\n## 종속성 업데이트의 빈도 및 타이밍 제어\n\n```\n          Dependabot는 구성 파일에서 사용자가 설정한 빈도로 버전 업데이트에 대한 검사를 실행합니다. 여기서 필요한 필드는 `schedule.interval`, `daily`, `weekly`, `monthly``quarterly``semiannually``yearly` 또는 (참조`cronjob`)로 [](/code-security/dependabot/working-with-dependabot/dependabot-options-reference#cronjob)설정해야 합니다.\n```\n\n기본적으로 Dependabot 임의 시간을 할당하여 종속성 업데이트에 대한 끌어오기 요청을 확인하고 발생시켜 워크로드의 균형을 조정합니다.\n\n그러나 산만을 줄이거나 버전 업데이트를 검토하고 해결하기 위한 시간과 리소스를 더 잘 구성하려면 빈도와 타이밍을 수정하는 것이 유용할 수 있습니다. 예를 들어 업데이트에 대한 일일 검사 대신 매주 실행하고, 팀의 심사 세션 전에 끌어오기 요청이 생성되는 시간을 선택하는 것을 선호할 수 있습니다 Dependabot.\n\n### 종속성 업데이트의 빈도 및 타이밍 수정\n\n옵션 조합과 함께 사용하여 `schedule` 버전 업데이트를 확인하는 경우 Dependabot 의 빈도 및 타이밍을 수정할 수 있습니다.\n\n아래 예제 `dependabot.yml` 파일은 npm 구성을 변경하여 매주 화요일 02:00 일본 표준시(UTC +09:00)에 npm 종속성에 대한 버전 업데이트를 확인하도록 지정 Dependabot 합니다.\n\n```yaml copy\n# `dependabot.yml` file with\n# customized schedule for version updates\n\nversion: 2\nupdates:\n  # Keep npm dependencies up to date\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    # Check the npm registry every week on Tuesday at 02:00 Japan Standard Time (UTC +09:00)\n    schedule:\n      interval: \"weekly\"\n      day: \"tuesday\"\n      time: \"02:00\"\n      timezone: \"Asia/Tokyo\"\n```\n\n```\n          [일정](/code-security/dependabot/working-with-dependabot/dependabot-options-reference#schedule-)도 참조하세요.\n```\n\n### 종속성 업데이트의 휴지 기간 설정\n\n```\n          `cooldown`을(를) 옵션 조합과 함께 사용하여 Dependabot이(가) **버전 업데이트**에 대한 끌어오기 요청을 생성하는 시점을 제어할 수 있지만, **보안 업데이트**에 대해서는 사용할 수 없습니다.\n```\n\n아래 예시 `dependabot.yml` 파일은 휴지 기간이 `requests`, `numpy`, 그리고 `pandas` 또는 `django` 접두사를 가진 종속성에 적용되는 모습을 보여줍니다. 반면, `pandas`라는 이름의 종속성(정확히 일치)에 대해서는 **exclude** 목록을 통해 제외됩니다.\n\n```yaml copy\nversion: 2\nupdates:\n  - package-ecosystem: \"pip\"\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n    cooldown:\n      default-days: 5\n      semver-major-days: 30\n      semver-minor-days: 7\n      semver-patch-days: 3\n      include:\n        - \"requests\"\n        - \"numpy\"\n        - \"pandas*\"\n        - \"django\"\n      exclude:\n        - \"pandas\"\n```\n\n* 휴지 일수는 1\\~90일 사이여야 합니다.\n* ```\n          `include`과 함께 사용할 수 있는 `exclude` 및 `cooldown` 목록에서 허용되는 최대 항목 제한은 각각 150개입니다.\n  ```\n\n> \\[!NOTE]\n> 휴지 기간 동안 **모든 종속성**을 고려하려면 다음과 같은 방법을 수행할 수 있습니다.\n>\n> * 모든 종속성에 쿨다운을 적용하는 `include` 옵션은 생략합니다.\n> * ```\n>           `\"*\"`의 `include`를 사용하여 모두에 쿨다운 설정을 적용합니다.\n>   ```\n\n쿨다운 설정에서 특정 종속성`exclude` 제외하려면 \\*\\*\\*\\* 을 사용하여 **특정 종속성**만 제외하는 것을 권장합니다.\n\n대부분의 패키지 관리자는 SemVer를 지원합니다. 쿨다운 기간의 종속성 새 버전 업데이트는 다음과 같이 연기됩니다.\n\n* 주요 업데이트: 30일 연기됨(`semver-major-days: 30`)\n* 부 업데이트: 7일 연기됨(`semver-minor-days: 7`)\n* 패치 업데이트: 3일 연기됨(`semver-patch-days: 3`)\n\n  ```\n          [\n          `cooldown`\n          ](/code-security/dependabot/working-with-dependabot/dependabot-options-reference#cooldown-)을 참조하세요.\n  ```\n\n## 의미 있는 업데이트 우선 순위 지정\n\n### 관련 종속성을 함께 그룹화\n\n```\n          `groups`을(를) 사용하면 여러 종속성에 대한 업데이트를 단일 끌어오기 요청으로 통합할 수 있습니다. 이렇게 하면 더 높은 위험 업데이트에 검토 시간을 집중하고 부 버전 업데이트를 검토하는 데 소요된 시간을 최소화할 수 있습니다. 예를 들어 개발 종속성에 대한 부 또는 패치 업데이트에 대한 업데이트를 단일 끌어오기 요청으로 결합하고 코드베이스의 주요 영역에 영향을 주는 보안 또는 버전 업데이트를 위한 전용 그룹을 가질 수 있습니다.\n```\n\n개별 패키지 에코시스템당 그룹을 구성해야 하며, 다음 조건을 조합하여 패키지 에코시스템당 여러 그룹을 만들 수 있습니다.\n\n* ```\n          Dependabot 업데이트 유형: `applies-to`\n  ```\n* 종속성 형식: `dependency-type`.\n* 종속성 이름: `patterns` 및 `exclude-patterns`\n* 시맨틱 버전 수준: `update-types`\n\n각 기준에 대해 지원되는 모든 값을 보려면 [`groups`](/ko/code-security/dependabot/working-with-dependabot/dependabot-options-reference#groups--)을(를) 참조하세요.\n\n아래 예제에서는 조건을 사용하여 종속성 그룹을 만드는 여러 가지 방법을 제공합니다.\n\n### 예제 1: 세 가지 버전 업데이트 그룹\n\n이 예제에서 `dependabot.yml` 파일은 다음과 같습니다.\n\n* \"`production-dependencies`\", \"`development-dependencies`\", \"`rubocop`\"라는 세 개의 그룹을 만듭니다.\n* `patterns` 및 `dependency-type`을(를) 사용하여 그룹의 종속성을 포함합니다.\n* `exclude-patterns`을(를) 사용하여 그룹에서 종속성(또는 여러 종속성)을 제외합니다.\n\n```yaml\nversion: 2\nupdates:\n  # Keep bundler dependencies up to date\n  - package-ecosystem: \"bundler\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    groups:\n      production-dependencies:\n        dependency-type: \"production\"\n      development-dependencies:\n        dependency-type: \"development\"\n        exclude-patterns:\n          - \"rubocop*\"\n      rubocop:\n        patterns:\n          - \"rubocop*\"\n```\n\n결과적으로 다음이 수행됩니다.\n\n* 버전 업데이트는 종속성 유형별로 그룹화됩니다.\n* 패턴 `rubocop*`과(와) 일치하는 개발 종속성은 `development-dependencies` 그룹에서 제외됩니다.\n* 대신 `rubocop*`과(와) 일치하는 개발 종속성은 `rubocop` 그룹에 포함됩니다. 순서 지정으로 인해 `rubocop*`과 일치하는 프로덕션 종속성이 `production-dependencies` 그룹에 포함됩니다.\n* 또한 `applies-to` 키가 없기 때문에 모든 그룹은 기본적으로 버전 업데이트에만 적용됩니다.\n\n### 예제 2: 제외된 종속성이 있는 그룹화된 업데이트\n\n이 예제에서 `dependabot.yml` 파일은 다음과 같습니다.\n\n* 사용자 지정된 번들러 구성의 일부로 \"`support-dependencies`\" 라는 그룹을 만듭니다.\n* 종속성(하나 이상의 종속성)의 이름과 일치하는 `patterns`을(를) 사용하여 그룹에 종속성을 포함합니다.\n* 종속성(하나 이상의 종속성)의 이름과 일치하는 `exclude-patterns`을(를) 사용하여 그룹에서 종속성을 제외합니다.\n* `applies-to: version-updates`가 사용되므로 그룹화를 버전 업데이트에만 적용합니다.\n\n```yaml\nversion: 2\nupdates:\n  # Keep bundler dependencies up to date\n  - package-ecosystem: \"bundler\"\n    directories:\n      - \"/frontend\"\n      - \"/backend\"\n      - \"/admin\"\n\n    schedule:\n      interval: \"weekly\"\n    # Create a group of dependencies to be updated together in one pull request\n    groups:\n      # Specify a name for the group, which will be used in pull request titles\n      # and branch names\n      support-dependencies:\n        # Define patterns to include dependencies in the group (based on\n        # dependency name)\n        applies-to: version-updates # Applies the group rule to version updates\n        patterns:\n          - \"rubocop\" # A single dependency name\n          - \"rspec*\"  # A wildcard string that matches multiple dependency names\n          - \"*\"       # A wildcard that matches all dependencies in the package\n                      # ecosystem. Note: using \"*\" may open a large pull request\n        # Define patterns to exclude dependencies from the group (based on\n        # dependency name)\n        exclude-patterns:\n          - \"gc_ruboconfig\"\n          - \"gocardless-*\"\n```\n\n결과적으로 다음이 수행됩니다.\n\n* 와일드카드(\"\\*\") 패턴으로 인해 번들러에 대한 대부분의 종속성은 `support-dependencies` 그룹으로 통합됩니다.\n* `gc_ruboconfig` 및 `gocardless-*`와 일치하는 종속성은 그룹에서 제외되고, Dependabot은 이러한 종속성에 대한 단일 끌어오기 요청을 계속 발생시킵니다. 이러한 종속성에 대한 업데이트를 자세히 검토해야 하는 경우 이 기능이 유용할 수 있습니다.\n* `support-dependencies`의 경우, Dependabot은 버전 업데이트에 대한 끌어오기 요청만 발생시킵니다.\n\n### 예제 3: 주요 업데이트에 대한 개별 끌어오기 요청 및 부/패치 업데이트에 대한 그룹화\n\n이 예제에서 `dependabot.yml` 파일은 다음과 같습니다.\n\n* \"`angular`\"라는 그룹을 만듭니다.\n* 종속성 이름과 일치하는 `patterns`을(를) 사용하여 그룹에 종속성을 포함합니다.\n* `update-type`을 사용하여 `minor` 또는 `patch` 업데이트만 그룹에 포함합니다.\n* `applies-to: version-updates`가 사용되므로 그룹화를 버전 업데이트에만 적용합니다.\n\n```yaml\nversion: 2\nupdates:\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    groups:\n      # Specify a name for the group, which will be used in pull request titles\n      # and branch names\n      angular:\n        applies-to: version-updates\n        patterns:\n          - \"@angular*\"\n        update-types:\n          - \"minor\"\n          - \"patch\"\n```\n\n결과적으로 다음이 수행됩니다.\n\n* Dependabot은 부 또는 패치 업데이트가 있는 모든 Angular 종속성에 대해 그룹화된 끌어오기 요청을 만듭니다.\n* 모든 주요 업데이트는 개별 끌어오기 요청을 통해 계속 발생합니다.\n\n### 예제 4: 부/패치 업데이트에 대한 그룹화된 끌어오기 요청 및 주요 업데이트에 대한 끌어오기 요청 없음\n\n이 예제에서 `dependabot.yml` 파일은 다음과 같습니다.\n\n* \"`angular`\" 및 \"`minor-and-patch`\"라는 두 개의 그룹을 만듭니다.\n* `applies-to`를 사용하면 첫 번째 그룹은 버전 업데이트에만 적용되고 두 번째 그룹은 보안 업데이트에만 적용됩니다.\n* `update-type`을(를) 사용하여 두 그룹 모두에 대해 `minor` 또는 `patch` 업데이트만 포함합니다.\n* `ignore` 조건을 사용하여 `@angular*` 패키지의 `major` 버전에 대한 업데이트를 제외합니다.\n\n```yaml\nversion: 2\nupdates:\n  # Keep npm dependencies up to date\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    groups:\n      angular:\n        applies-to: version-updates\n        patterns:\n          - \"@angular*\"\n        update-types:\n          - \"minor\"\n          - \"patch\"\n      minor-and-patch:\n        applies-to: security-updates\n        patterns:\n          - \"@angular*\"\n        update-types:\n          - \"patch\"\n          - \"minor\"\n    ignore:\n      - dependency-name: \"@angular*\"\n        update-types: [\"version-update:semver-major\"]\n```\n\n결과적으로 다음이 수행됩니다.\n\n* Angular 종속성에 대한 부 버전 및 패치 버전 업데이트는 단일 끌어오기 요청으로 그룹화됩니다.\n* Angular 종속성에 대한 부 및 패치 보안 업데이트도 단일 끌어오기 요청으로 그룹화됩니다.\n* Dependabot은 Angular에 대한 주 업데이트에 대한 끌어오기 요청을 자동으로 열지 않습니다.\n\n### monorepo에서 디렉터리 간 업데이트 그룹화\n\n공통 종속성을 공유하는 여러 디렉터리로 monorepo를 관리하는 경우 모든 디렉터리에서 종속성 이름으로 업데이트를 그룹화하여 버전 업데이트에 대한 끌어오기 요청 수를 줄일 수 있습니다.\n\n여러 디렉터리를 모니터링하고 종속성 이름으로 Dependabot 그룹화하도록 구성하는 Dependabot 경우 다음을 수행합니다.\n\n* 여러 디렉터리에 영향을 주는 각 종속성 업데이트에 대한 단일 끌어오기 요청 만들기\n* 하나의 작업에서 모든 디렉터리에서 동일한 버전으로 동일한 종속성 업데이트\n* 검토해야 하는 끌어오기 요청 수 줄이기\n* 디렉터리당 대신 테스트를 한 번 실행하여 CI/CD 비용 최소화\n\n자세한 내용은 [`group-by`](/ko/code-security/reference/supply-chain-security/dependabot-options-reference#group-by-groups)를 참조하세요.\n\n이 구성 예제에서는 `/frontend`, `/admin-panel`, `/mobile-app` 디렉터리에서 종속성 이름으로 업데이트를 그룹화합니다. 모든 세 디렉터리 `lodash`에서 업데이트가 필요하면, Dependabot은 세 위치 모두의 `lodash`을(를) 업데이트하는 \"monorepo-dependencies 그룹의 로다시 버전 상승\"이라는 단일 풀 리퀘스트를 생성합니다.\n\n```yaml\nversion: 2\nupdates:\n  - package-ecosystem: \"npm\"\n    directories:\n      - \"/frontend\"\n      - \"/admin-panel\"\n      - \"/mobile-app\"\n    schedule:\n      interval: \"weekly\"\n    groups:\n      monorepo-dependencies:\n        group-by: dependency-name\n```"}