Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-07-09. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Устранение ошибок Dependabot

Иногда Dependabot не удается создать запрос на вытягивание для обновления зависимостей. Вы можете просмотреть ошибку и разблокировать Dependabot.

Примечание. Администратор сайта должен настроить Dependabot updates для ваш экземпляр GitHub Enterprise Server, прежде чем использовать эту функцию. Дополнительные сведения см. в разделе Включение Dependabot для предприятия.

Возможно, вы не сможете включить или отключить Dependabot updates , если владелец предприятия установил политику на уровне предприятия. Дополнительные сведения см. в разделе "Применение политик безопасности кода и анализа для вашего предприятия".

Сведения об ошибках Dependabot

Dependabot вызывает запросы на вытягивание для обновления зависимостей. В зависимости от настройки репозитория Dependabot может вызывать запросы на вытягивание для обновления версий и (или) системы безопасности. Управление этими запросами на вытягивание аналогично управлению другими запросами на вытягивание, однако также доступны несколько дополнительных команд. Сведения о включении обновлений зависимостей Dependabot см. в разделе "[AUTOTITLE" и "Настройка обновлений для системы безопасности Dependabot](/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates)".

Если Dependabot не может вызывать запрос на включение внесенных изменений, это отмечается как ошибка.

Dependabot security updates — использование для исследования ошибок

Если для Dependabot блокируется возможность создать запрос на включение внесенных изменений для исправления ошибки в оповещении Dependabot, этот инструмент публикует сообщение об ошибке в оповещении. В представлении Dependabot alerts отображается список всех оповещений, которые еще не разрешены. Чтобы получить доступ к представлению оповещений, щелкните Dependabot alerts на вкладке Безопасность репозитория. Если был создан запрос на включение внесенных изменений, который исправит уязвимую зависимость, оповещение содержит ссылку на этот запрос.

Снимок экрана: представление Dependabot alerts с двумя оповещениями. В правой части одного оповещения ссылка на запрос на вытягивание с именем "#353" выделена оранжевым контуром.

Существует несколько причин, по которым в оповещении может не быть ссылки на запрос на вытягивание:

  1. Dependabot security updates не включены по умолчанию для репозитория;
  2. оповещение относится к косвенной или транзитивной зависимости, которая явно не определена в файле блокировки;
  3. Dependabot не может создать запрос на включение внесенных изменений из-за ошибки.

Если Dependabot не может создать запрос на включение внесенных изменений из-за ошибки, вы можете просмотреть сведения об ошибке можно, нажав на оповещение.

Dependabot version updates — использование для исследования ошибок

Если Dependabot заблокировано при создании запроса на вытягивание для обновления зависимости в экосистеме, он публикует значок ошибки в файле манифеста.

Файлы манифеста, управляемые Dependabot, перечислены на вкладке Dependabot. Чтобы открыть эту вкладку, на вкладке Аналитика в репозитории выберите Схема зависимостей и перейдите на вкладку Dependabot.

Снимок экрана: представление Dependabot . Значок генерации оповещений и ссылка с названием "Последняя проверка 10 часов назад" выделена оранжевым контуром.

Чтобы просмотреть журналы для любого файла манифеста, щелкните ссылку Последняя проверка — TIME назад и выберите Просмотреть журналы.

Общие сведения об ошибках Dependabot

Запросы на включение внесенных изменений для обновлений безопасности позволяют обновить уязвимую зависимость до минимальной версии, в которой эта уязвимость устранена. Запросы на включение внесенных изменений для обновлений версий, напротив, позволяют обновить зависимость до последней версии, разрешенной в манифесте пакета и файлах конфигурации Dependabot. Следовательно, некоторые ошибки относятся только к одному типу обновления.

Dependabot не удается обновить ЗАВИСИМОСТЬ до версии без уязвимостей

Только для обновлений системы безопасности. Dependabot не может создать запрос на включение внесенных изменений, чтобы обновить уязвимую зависимость до безопасной версии, не нарушив другие зависимости в схеме зависимостей для этого репозитория.

Каждое приложение с зависимостями имеет схему зависимостей, то есть направленный ациклический граф всех версий пакета, от которых приложение зависит напрямую или косвенно. При каждом обновлении какой-либо зависимости целостность этой схемы не должна нарушаться, в противном случае не удастся выполнить сборку приложения. Если в какой-либо экосистеме, например в npm и RubyGems, имеется глубокая и сложная схема зависимостей, зачастую невозможно обновить одну зависимость без обновления всей экосистемы.

Лучший способ избежать этой проблемы — использовать самые последние версии, например, включив обновление версий. Это повышает вероятность того, что уязвимость в одной зависимости может быть устранена простым обновлением, которое не нарушит схему зависимостей. Дополнительные сведения см. в разделе "Настройка обновлений версий Dependabot".

Dependabot пытается обновить зависимости без предупреждения

Только для обновлений системы безопасности. Dependabot обновляет явно определенные уязвимые транзитивные зависимости для всех экосистем. Для npm Dependabot создаст запрос на вытягивание, который также обновляет родительскую зависимость, если это единственный способ исправить транзитивную.

Например, проект может иметь зависимость от A версии ~2.0.0, которая имеет транзитивную зависимость от B версии ~1.0.0, разрешенной в 1.0.1.

my project
|
--> A (2.0.0) [~2.0.0]
       |
       --> B (1.0.1) [~1.0.0]

Если появилась уязвимость для B версий <2.0.0 и доступно исправление для версии 2.0.0, то Dependabot попытается обновить B, но это окажется невозможным из-за установленного A ограничения, позволяющего использовать только более ранние, уязвимые версии. Чтобы устранить уязвимость, Dependabot будет проверять наличие обновлений для зависимости A, которые позволят использовать исправленную версию B.

Dependabot автоматически создает запрос на вытягивание, который обновляет как заблокированные родительские, так и дочерние транзитивные зависимости.

Dependabot не удается закрыть открытый запрос на вытягивание для обновления, который уже применен к ветвь по умолчанию

Dependabot закрывает запросы на вытягивание обновлений зависимостей после обнаружения фиксации этих обновлений в ветвь по умолчанию. Однако в редких случаях запрос на вытягивание может оставаться открытым. Если вы заметили, что вы зафиксировали обновление зависимости вручную и что запрос на вытягивание для этого же обновления по-прежнему открыт, можно использовать одну из следующих команд в комментарии к запросу на вытягивание:

  • @dependabot recreateили
  • @dependabot rebase.

Любой комментарий активирует Dependabot для проверки того, является ли зависимость более не обновляемой или уязвимой. Если Dependabot обнаруживает, что запрос на вытягивание больше не требуется, он закроет запрос на вытягивание в этом конкретном случае.

Дополнительные сведения о командах комментариев Dependabot см. в разделе "Управление запросами на вытягивание для обновлений зависимостей".

Dependabot не может выполнить обновление до нужной версии, так как для последней версии уже есть открытый запрос на включение внесенных изменений

Только для обновлений системы безопасности. Dependabot не создаст запрос на включение внесенных изменений, чтобы обновить уязвимую зависимость до безопасной версии, так как уже имеется открытый запрос на включение внесенных изменений для обновления этой зависимости. Эта ошибка возникает при обнаружении уязвимости в одной зависимости, когда уже существует открытый запрос на включение внесенных изменений для обновления этой зависимости до последней версии.

Существует два варианта: просмотрите открытый запрос на включение внесенных изменений и выполните его слияние, когда убедитесь, что это изменение безопасно, или закройте этот запрос и инициируйте новый для обновления безопасности. Дополнительные сведения см. в разделе "Активация запроса на включение внесенных изменений в Dependabot вручную".

Обновление системы безопасности не требуется, так как ЗАВИСИМОСТЬ больше не уязвима

Только для обновлений системы безопасности. Dependabot не может закрыть запрос на вытягивание, чтобы обновить зависимость, которая не является или больше не уязвима. Эта ошибка возникает, если граф зависимостей данные устарели или когда граф зависимостей и Dependabot не согласны, если определенная версия зависимости уязвима.

Чтобы отладить проблему, рекомендуется сначала изучить граф зависимостей для репозитория, просмотрите версию, которую она обнаружила для зависимости, и проверьте, соответствует ли указанная версия используемой в репозитории версии.

Если вы подозреваете, что данные граф зависимостей устарели, может потребоваться вручную обновить граф зависимостей для репозитория или изучить сведения о зависимости дальше. Дополнительные сведения см. в разделе Устранение неполадок графа зависимостей.

Если вы можете подтвердить, что версия зависимости больше не уязвима, можно закрыть запрос на вытягивание Dependabot.

Истекло время ожидания для Dependabot во время обновления

Для оценки необходимого обновления и подготовки запроса на включение внесенных изменений инструменту Dependabot потребовалось больше времени, чем разрешено. Эта ошибка обычно встречается только для больших репозиториев с множеством файлов манифестов, например npm или проектов yarn monorepo с сотнями файлов package.json. Обновления экосистемы Composer также требуют больше времени для оценки и срок ожидания для них может истекать.

Эту ошибку трудно устранить. Если время ожидания для обновления версии истекает, можно указать наиболее важные зависимости, которые нужно обновить, с помощью параметра allow или с помощью параметра ignore исключить обновление некоторых зависимостей. При обновлении конфигурации Dependabot сможет просмотреть обновление версии и создать запрос на включение внесенных изменений, когда появится доступное время.

Вы можете снизить вероятность истечения времени ожидания для обновления безопасности истекает, обеспечив постоянно обновление зависимостей, например, включив обновление версий. Дополнительные сведения см. в разделе Настройка обновлений версий Dependabot.

Dependabot не удается открыть новые запросы на включение внесенных изменений

Существует ограничение на количество открытых запросов на включение внесенных изменений, которые может создавать Dependabot. По достижении этого лимита новые запросы на включение внесенных изменений не открываются и возникает эта ошибка. Лучший способ устранить ее — проверить некоторые открытые запросы на включение внесенных изменений и выполнить их слияние.

У запросов на включение внесенных изменений, связанных с безопасностью и обновлением версий, разные ограничения, поэтому открытые запросы на включение внесенных изменений для обновления версий не могут блокировать создание запроса на включение внесенных изменений для обновления безопасности. Максимальное число запросов на включение внесенных изменений для обновлений безопасности равно 10. По умолчанию ограничение для обновления версий равно 5, но его можно изменить с помощью параметра open-pull-requests-limit в файле конфигурации. Дополнительные сведения см. в разделе Параметры конфигурации для файла dependabot.yml.

Лучший способ устранить эту ошибку — выполнить слияние или закрыть некоторые существующие запросы на включение внесенных изменений и запустить новый запрос на включение внесенных изменений вручную. Дополнительные сведения см. в разделе "Активация запроса на включение внесенных изменений в Dependabot вручную".

Dependabot не может разрешить зависимости или получить к ним доступ

Если Dependabot пытается проверить, нужно ли обновить ссылки на зависимости в репозитории, но не может получить доступ к одному или нескольким файлам, на которые указывают ссылки, операция завершится сообщением об ошибке "Dependabot не может разрешить файлы зависимостей LANGUAGE". Тип ошибки API: git_dependencies_not_reachable.

Аналогично, если Dependabot не может получить доступ к частному реестру пакетов, в котором находится зависимость, возникает одна из следующих ошибок:

  • "Dependabot не может получить доступ к зависимости в частном реестре пакетов"
    (Тип ошибки API:private_source_not_reachable)
  • "Dependabot не может пройти проверку подлинности в частном реестре пакетов"
    (Тип ошибки API:private_source_authentication_failure)
  • "Время ожидания доступа к частному реестру пакетов для Dependabot истекло"
    (Тип ошибки API:private_source_timed_out)
  • "Dependabot не удалось проверить сертификат для частного реестра пакетов"
    (Тип ошибки API:private_source_certificate_failure)

Чтобы Dependabot мог обновить ссылки на зависимости, все эти зависимости должны быть размещены в доступных расположениях.

Только обновление версий. При обновлении системы безопасности или версий некоторые экосистемы должны иметь возможность разрешить все зависимости от источника, чтобы убедиться, что обновления успешно выполнены. Если файлы манифеста или блокировки содержат какие-либо частные зависимости, Dependabot должен иметь доступ к расположению, в котором размещаются эти зависимости. Владельцы организации могут предоставлять Dependabot доступ к частным репозиториям, содержащим зависимости для проекта, в той же организации. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для организации. Вы можете настроить доступ к частным реестрам в файле конфигурации репозитория dependabot.yml . Дополнительные сведения см. в разделе Параметры конфигурации для файла dependabot.yml. Кроме того, Dependabot не поддерживает частные зависимости GitHub для всех менеджеров пакетов. Дополнительные сведения см. в разделе Сведения об обновлениях версий Dependabot.

Активация запроса на включение внесенных изменений в Dependabot вручную

Если разблокировать Dependabot, можно вручную заново попытаться создать запрос на включение внесенных изменений.

  • Обновления безопасности — откройте оповещение Dependabot, в котором показана исправленная ошибка, и нажмите кнопку Создать обновление безопасности Dependabot.
  • Обновления версий — на вкладке Аналитика для репозитория выберите Схема зависимостей и перейдите на вкладку Dependabot. Нажмите кнопку Последняя проверка TIME назад, чтобы просмотреть файл журнала, созданный инструментом Dependabot во время последней проверки обновлений версии. Щелкните ссылку Проверка обновлений.

Дополнительные материалы