{"meta":{"title":"Автоматизация Dependabot с помощью GitHub Actions","intro":"Примеры того, как можно GitHub Actions автоматизировать распространённые Dependabot связанные задачи.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/code-security","title":"Безопасность и качество кода"},{"href":"/ru/code-security/tutorials","title":"Tutorials"},{"href":"/ru/code-security/tutorials/secure-your-dependencies","title":"Защита зависимостей"},{"href":"/ru/code-security/tutorials/secure-your-dependencies/automate-dependabot-with-actions","title":"Automate Dependabot с действиями"}],"documentType":"article"},"body":"# Автоматизация Dependabot с помощью GitHub Actions\n\nПримеры того, как можно GitHub Actions автоматизировать распространённые Dependabot связанные задачи.\n\n> \\[!NOTE] В этой статье объясняется, как автоматизировать Dependabotзадачи, связанные с -, с помощью GitHub Actions. Для получения дополнительной информации о забеге Dependabot updates с GitHub Actionsиспользованием , см. [Dependabot на GitHub Actions runners](/ru/code-security/concepts/supply-chain-security/dependabot-on-actions) .\n\nВы можете автоматизировать GitHub Actions задачи при Dependabot создании pull request, чтобы обновить зависимости. Это полезно, если вы хотите:\n\n* Убедитесь, Dependabot что pull requests (обновления версий и обновления безопасности) созданы с использованием правильных данных для ваших рабочих процессов, включая метки и имена.\n\n* Запускайте рабочие процессы, чтобы отправлять  Dependabot pull requests (обновления версий и обновления безопасности) в процесс проверки или для автоматического слияния.\n\n## О Dependabot и GitHub Actions\n\n> \\[!IMPORTANT]\n> Если Dependabot репозиторий включен, он всегда будет работать на GitHub Actions, **обходя как проверки политики действий, так и отключение на уровне репозитория или организации**. Это гарантирует, что рабочие процессы обновления безопасности и версий всегда выполняются при включении Dependabot.\n\nDependabot Создаёт pull requests, чтобы поддерживать ваши зависимости в актуальном состоянии. Вы можете автоматизировать GitHub Actions задачи при создании этих pull-запросов. Например, получение дополнительных артефактов, добавление меток, выполнение тестов или изменение запроса на вытягивание.\n\nDependabot может активировать рабочие процессы GitHub Actions в запросах на вытягивание и комментариях; однако некоторые события обрабатываются иначе. Для получения дополнительной информации см. [Устранение неполадок зависимостей от действий GitHub](/ru/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependabot-on-actions).\n\n> \\[!NOTE]\n> Вы также можете использовать agentic workflows для анализа зависимостей, сводок обновлений и рекомендаций по исправлению, сохраняя принудительное применение безопасности и объединение в детерминированных GitHub Actions рабочих процессах. Дополнительные сведения см. в разделе [Создание агентских рабочих процессов GitHub](/ru/copilot/how-tos/github-agentic-workflows/creating-github-agentic-workflows).\n\nВот несколько распространённых сценариев pull request, которые можно автоматизировать с помощью GitHub Actions.\n\n## Получение метаданных о запросе на вытягивание\n\nБольшинству автоматизации требуется знать сведения о содержимом запроса на вытягивание: что такое имя зависимости, если это рабочая зависимость, и если это основное, дополнительное или исправление. Вы можете использовать действие для получения информации о зависимостях, которые обновляются с помощью pull-запроса, сгенерированного .Dependabot\n\nПример:\n\n```yaml copy\n# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.\n# Они предоставляются сторонним поставщиком, и на них распространяются\n# отдельные условия обслуживания, политика конфиденциальности и поддержка\n# документации.\nname: Dependabot fetch metadata\non: pull_request\n\npermissions:\n  pull-requests: write\n  issues: write\n\njobs:\n  dependabot:\n    runs-on: ubuntu-latest\n    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'\n    steps:\n      - name: Dependabot metadata\n        id: metadata\n        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7\n        with:\n          github-token: \"${{ secrets.GITHUB_TOKEN }}\"\n      # The following properties are now available:\n      #  - steps.metadata.outputs.dependency-names\n      #  - steps.metadata.outputs.dependency-type\n      #  - steps.metadata.outputs.update-type\n```\n\nДополнительные сведения см. в репозитории [`dependabot/fetch-metadata`](https://github.com/dependabot/fetch-metadata).\n\n## Маркировка запроса на вытягивание\n\nЕсли у вас есть другие автоматизации или процессы сортировки на основе GitHub меток, вы можете настроить действие для назначения меток на основе предоставленных метаданных.\n\nПример, который помечает все обновления зависимостей рабочей среды меткой:\n\n```yaml copy\n# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.\n# Они предоставляются сторонним поставщиком, и на них распространяются\n# отдельные условия обслуживания, политика конфиденциальности и поддержка\n# документации.\nname: Dependabot auto-label\non: pull_request\n\npermissions:\n  pull-requests: write\n  issues: write\n\njobs:\n  dependabot:\n    runs-on: ubuntu-latest\n    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'\n    steps:\n      - name: Dependabot metadata\n        id: metadata\n        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7\n        with:\n          github-token: \"${{ secrets.GITHUB_TOKEN }}\"\n      - name: Add a label for all production dependencies\n        if: steps.metadata.outputs.dependency-type == 'direct:production'\n        run: gh pr edit \"$PR_URL\" --add-label \"production\"\n        env:\n          PR_URL: ${{github.event.pull_request.html_url}}\n```\n\n## Автоматическое утверждение запроса на вытягивание\n\nВы можете автоматически одобрять Dependabot pull request, используя GitHub CLI в рабочем процессе.\n\nПример:\n\n```yaml copy\n# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.\n# Они предоставляются сторонним поставщиком, и на них распространяются\n# отдельные условия обслуживания, политика конфиденциальности и поддержка\n# документации.\nname: Dependabot auto-approve\non: pull_request\n\npermissions:\n  pull-requests: write\n\njobs:\n  dependabot:\n    runs-on: ubuntu-latest\n    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'\n    steps:\n      - name: Dependabot metadata\n        id: metadata\n        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7\n        with:\n          github-token: \"${{ secrets.GITHUB_TOKEN }}\"\n      - name: Approve a PR\n        run: gh pr review --approve \"$PR_URL\"\n        env:\n          PR_URL: ${{github.event.pull_request.html_url}}\n          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}\n```\n\n## Включение автоматического заполнения запроса на вытягивание\n\nЕсли вы хотите позволить сопровождающим отмечать определённые pull-запросы для автослияния, вы можете использовать GitHubфункцию автослияния в '. Это позволяет объединить запрос на вытягивание при успешном выполнении любых тестов и утверждений, необходимых правилам защиты ветви.\n\nДополнительные сведения см. в разделе \\[AUTOTITLE и [Автоматическое слияние запроса на вытягивание](/ru/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request)]\\(/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule).\n\nВместо этого можно использовать GitHub Actions и .GitHub CLI Ниже приведен пример автоматического объединения всех обновлений исправлений:`my-dependency`\n\n```yaml copy\n# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.\n# Они предоставляются сторонним поставщиком, и на них распространяются\n# отдельные условия обслуживания, политика конфиденциальности и поддержка\n# документации.\nname: Dependabot auto-merge\non: pull_request\n\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  dependabot:\n    runs-on: ubuntu-latest\n    if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'\n    steps:\n      - name: Dependabot metadata\n        id: metadata\n        uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7\n        with:\n          github-token: \"${{ secrets.GITHUB_TOKEN }}\"\n      - name: Enable auto-merge for Dependabot PRs\n        if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'\n        run: gh pr merge --auto --merge \"$PR_URL\"\n        env:\n          PR_URL: ${{github.event.pull_request.html_url}}\n          GH_TOKEN: ${{secrets.GITHUB_TOKEN}}\n```\n\n> \\[!NOTE]\n> Если вы используете проверки статуса для тестирования pull-запросов, необходимо **включить «Требовать прохождения проверок статуса» перед слиянием** с целевой веткой для Dependabot pull requests. Это правило защиты ветви гарантирует, что запросы на вытягивание не объединяются, если **только обязательная проверка состояния не передаются**. Дополнительные сведения см. в разделе [Управление правилом защиты ветвей](/ru/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule).\n\nЕсли целевая ветка использует очередь слияния, встроенный `GITHUB_TOKEN` не может добавлять pull requests в очередь. В этом случае необходимо аутентифицировать рабочий процесс с personal access token помощью токена GitHub App , который имеет разрешение на слияние, и использовать его вместо `GITHUB_TOKEN` этого для шага `gh pr merge` .\n\n## Dependabot и GitHub Actions политики\n\nОбычно возможность запуска рабочего процесса в репозитории зависит от GitHub Actions**проверок политики** и от того, GitHub Actions\\*\\*\\*\\* ли он на уровне организации или репозитория. Эти элементы управления могут ограничивать работу рабочих процессов — особенно если внешние действия заблокированы или GitHub Actions полностью отключены.\n\nОднако при Dependabot включении репозитория его рабочие процессы всегда будут выполняться GitHub Actions, **обходя как проверки политики действий, так и отключение**.\n\n* Dependabot рабочие процессы не блокируются отключением действий или ограничениями корпоративных политик.\n* Действия, на которые ссылаются в этих рабочих процессах, также разрешены, даже если внешние действия запрещены.\n\nДополнительные сведения см. в разделе [Dependabot на GitHub Actions runners](/ru/code-security/concepts/supply-chain-security/dependabot-on-actions).\n\n## Исследование неудачных запусков рабочего процесса\n\nЕсли выполнение рабочего процесса завершается сбоем, проверьте следующее:\n\n* Вы выполняете рабочий процесс только в том случае, если он активируется правильным субъектом.\n* Вы извлекаете корректную `ref` для `pull_request`.\n* Ваши секреты доступны в Dependabot секретах, а не в виде GitHub Actions секретов.\n* У вас есть `GITHUB_TOKEN` с надлежащими разрешениями.\n\nДля информации о написании и отладке GitHub Actionsсм. [Написание рабочих процессов](/ru/actions/how-tos/write-workflows).\n\nДополнительные советы по устранению проблем с рабочими процессами см. в разделе [Устранение неполадок зависимостей от действий GitHub](/ru/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependabot-on-actions)."}