Вы можете автоматизировать GitHub Actions задачи при Dependabot создании pull request, чтобы обновить зависимости. Это полезно, если вы хотите:
-
Убедитесь, Dependabot что pull requests (обновления версий и обновления безопасности) созданы с использованием правильных данных для ваших рабочих процессов, включая метки и имена.
-
Запускайте рабочие процессы, чтобы отправлять Dependabot pull requests (обновления версий и обновления безопасности) в процесс проверки или для автоматического слияния.
Примечание.
Администратор сайта должен настроить Dependabot updates для ваш экземпляр GitHub Enterprise Server, прежде чем использовать эту функцию. Дополнительные сведения см. в разделе Включение Dependabot для предприятия.
Возможно, вы не сможете включить или отключить Dependabot updates , если владелец предприятия установил политику на уровне предприятия. Дополнительные сведения см. в разделе Применение политик безопасности кода и анализа для вашего предприятия.
О Dependabot и GitHub Actions
Внимание
Если Dependabot репозиторий включен, он всегда будет работать на GitHub Actions, обходя как проверки политики действий, так и отключение на уровне репозитория или организации. Это гарантирует, что рабочие процессы обновления безопасности и версий всегда выполняются при включении Dependabot.
Dependabot Создаёт pull requests, чтобы поддерживать ваши зависимости в актуальном состоянии. Вы можете автоматизировать GitHub Actions задачи при создании этих pull-запросов. Например, получение дополнительных артефактов, добавление меток, выполнение тестов или изменение запроса на вытягивание.
Dependabot может активировать рабочие процессы 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 рабочие процессы не блокируются отключением действий или ограничениями корпоративных политик.
- Действия, на которые ссылаются в этих рабочих процессах, также разрешены, даже если внешние действия запрещены.
Исследование неудачных запусков рабочего процесса
Если выполнение рабочего процесса завершается сбоем, проверьте следующее:
- Вы выполняете рабочий процесс только в том случае, если он активируется правильным субъектом.
- Вы извлекаете корректную
refдляpull_request. - Ваши секреты доступны в Dependabot секретах, а не в виде GitHub Actions секретов.
- У вас есть
GITHUB_TOKENс надлежащими разрешениями.
Для информации о написании и отладке GitHub Actionsсм. Написание рабочих процессов.
Дополнительные советы по устранению проблем с рабочими процессами см. в разделе Устранение неполадок зависимостей от действий GitHub.