Примечание.
В этой статье объясняется, как автоматизировать Dependabotзадачи, связанные с -, с помощью GitHub Actions. Для получения дополнительной информации о забеге Dependabot updates с GitHub Actionsиспользованием , см. Dependabot на GitHub Actions runners .
Вы можете автоматизировать GitHub Actions задачи при Dependabot создании pull request, чтобы обновить зависимости. Это полезно, если вы хотите:
-
Убедитесь, Dependabot что pull requests (обновления версий и обновления безопасности) созданы с использованием правильных данных для ваших рабочих процессов, включая метки и имена.
-
Запускайте рабочие процессы, чтобы отправлять Dependabot pull requests (обновления версий и обновления безопасности) в процесс проверки или для автоматического слияния.
О Dependabot и GitHub Actions
Внимание
Если Dependabot репозиторий включен, он всегда будет работать на GitHub Actions, обходя как проверки политики действий, так и отключение на уровне репозитория или организации. Это гарантирует, что рабочие процессы обновления безопасности и версий всегда выполняются при включении Dependabot.
Dependabot Создаёт pull requests, чтобы поддерживать ваши зависимости в актуальном состоянии. Вы можете автоматизировать GitHub Actions задачи при создании этих pull-запросов. Например, получение дополнительных артефактов, добавление меток, выполнение тестов или изменение запроса на вытягивание.
Dependabot может активировать рабочие процессы GitHub Actions в запросах на вытягивание и комментариях; однако некоторые события обрабатываются иначе. Для получения дополнительной информации см. Устранение неполадок зависимостей от действий GitHub.
Примечание.
Вы также можете использовать agentic workflows для анализа зависимостей, сводок обновлений и рекомендаций по исправлению, сохраняя принудительное применение безопасности и объединение в детерминированных GitHub Actions рабочих процессах. Дополнительные сведения см. в разделе Создание агентских рабочих процессов GitHub.
Вот несколько распространённых сценариев pull request, которые можно автоматизировать с помощью GitHub Actions.
Получение метаданных о запросе на вытягивание
Большинству автоматизации требуется знать сведения о содержимом запроса на вытягивание: что такое имя зависимости, если это рабочая зависимость, и если это основное, дополнительное или исправление. Вы можете использовать действие для получения информации о зависимостях, которые обновляются с помощью pull-запроса, сгенерированного .Dependabot
Пример:
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
# The following properties are now available:
# - steps.metadata.outputs.dependency-names
# - steps.metadata.outputs.dependency-type
# - steps.metadata.outputs.update-type
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot fetch metadata
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
# The following properties are now available:
# - steps.metadata.outputs.dependency-names
# - steps.metadata.outputs.dependency-type
# - steps.metadata.outputs.update-type
Дополнительные сведения см. в репозитории dependabot/fetch-metadata.
Маркировка запроса на вытягивание
Если у вас есть другие автоматизации или процессы сортировки на основе GitHub меток, вы можете настроить действие для назначения меток на основе предоставленных метаданных.
Пример, который помечает все обновления зависимостей раб��чей среды меткой:
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Add a label for all production dependencies
if: steps.metadata.outputs.dependency-type == 'direct:production'
run: gh pr edit "$PR_URL" --add-label "production"
env:
PR_URL: ${{github.event.pull_request.html_url}}
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot auto-label
on: pull_request
permissions:
pull-requests: write
issues: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Add a label for all production dependencies
if: steps.metadata.outputs.dependency-type == 'direct:production'
run: gh pr edit "$PR_URL" --add-label "production"
env:
PR_URL: ${{github.event.pull_request.html_url}}
Автоматическое утверждение запроса на вытягивание
Вы можете автоматически одобрять Dependabot pull request, используя GitHub CLI в рабочем процессе.
Пример:
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot auto-approve
on: pull_request
permissions:
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Approve a PR
run: gh pr review --approve "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot auto-approve
on: pull_request
permissions:
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Approve a PR
run: gh pr review --approve "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
Включение автоматического заполнения запроса на вытягивание
Если вы хотите позволить сопровождающим отмечать определённые pull-запросы для автослияния, вы можете использовать GitHubфункцию автослияния в '. Это позволяет объединить запрос на вытягивание при успешном выполнении любых тестов и утверждений, необходимых правилам защиты ветви.
Дополнительные сведения см. в разделе [AUTOTITLE и Автоматическое слияние запроса на вытягивание](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule).
Вместо этого можно использовать GitHub Actions и .GitHub CLI Ниже приведен пример автоматического объединения всех обновлений исправлений:my-dependency
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot auto-merge
on: pull_request
permissions:
contents: write
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs
if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.
# Они предоставляются сторонним поставщиком, и на них распространяются
# отдельные условия обслуживания, политика конфиденциальности и поддержка
# документации.
name: Dependabot auto-merge
on: pull_request
permissions:
contents: write
pull-requests: write
jobs:
dependabot:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == 'owner/my_repo'
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@d7267f607e9d3fb96fc2fbe83e0af444713e90b7
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs
if: contains(steps.metadata.outputs.dependency-names, 'my-dependency') && steps.metadata.outputs.update-type == 'version-update:semver-patch'
run: gh pr merge --auto --merge "$PR_URL"
env:
PR_URL: ${{github.event.pull_request.html_url}}
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
Примечание.
Если вы используете проверки статуса для тестирования pull-запросов, необходимо включить «Требовать прохождения проверок статуса» перед слиянием с целевой веткой для Dependabot pull requests. Это правило защиты ветви гарантирует, что запросы на вытягивание не объединяются, если только обязательная проверка состояния не передаются. Дополнительные сведения см. в разделе Управление правилом защиты ветвей.
Если целевая ветка использует очередь слияния, встроенный GITHUB_TOKEN не может добавлять pull requests в очередь. В этом случае необходимо аутентифицировать рабочий процесс с personal access token помощью токена GitHub App , который имеет разрешение на слияние, и использовать его вместо GITHUB_TOKEN этого для шага gh pr merge .
Dependabot и GitHub Actions политики
Обычно возможность запуска рабочего процесса в репозитории зависит от GitHub Actionsпроверок политики и от того, GitHub Actions**** ли он на уровне организации или репозитория. Эти элементы управления могут ограничивать работу рабочих процессов — особенно если внешние действия заблокированы или GitHub Actions полностью отключены.
Однако при Dependabot включении репозитория его рабочие процессы всегда будут выполняться GitHub Actions, обходя как проверки политики действий, так и отключение.
- Dependabot рабочие процессы не блокируются отключением действий или ограничениями корпоративных политик.
- Действия, на которые ссылаются в этих рабочих процессах, также разрешены, даже если внешние действия запрещены.
Дополнительные сведения см. в разделе Dependabot на GitHub Actions runners.
Исследование неудачных запусков рабочего процесса
Если выполнение рабочего процесса завершается сбоем, проверьте следующее:
- Вы выполняете рабочий процесс только в том случае, если он активируется правильным субъектом.
- Вы извлекаете корректную
refдляpull_request. - Ваши секреты доступны в Dependabot секретах, а не в виде GitHub Actions секретов.
- У вас есть
GITHUB_TOKENс надлежащими разрешениями.
Для информации о написании и отладке GitHub Actionsсм. Написание рабочих процессов.
Дополнительные советы по устранению проблем с рабочими процессами см. в разделе Устранение неполадок зависимостей от действий GitHub.