Рубрики
Uncategorized

Auto Merge Devidenbot запросы на вытягивание

Хороший год назад было объявлено, что Devingabot интегрируется в GitHub. Эта задача … с меткой GitHub, Devingabot, Githubactions, DevOps.

Хороший год назад это был объявлен это DEVIVEBOT интегрируется в GitHub. Эта задача скоро завершена, так как Old Devideabot («Предварительный просмотр» Devingabot «) будет закрыт 3 августа 2021 года. 1

Функцией, которая все еще отсутствует в нативной интеграции GitHub, является вариантом для автоматического слияния запросов на вытягивание DEDIGNABOT после успешного запуска CI.

Как это часто в наши дни я решил эту проблему, используя действия GitHub. Вот как я это сделал.

Прежде чем мы начнем#

1 марта 2021 г. GitHub Изменено Как разрешения работают в действиях GitHub, запускаемых Devidabot. С 1 марта Github_token готов только.

Это означает, что любой запуск рабочего процесса, который запускается Devidebot, не может ничего изменить в вашем хранилище. Он не может добавить новые файлы и не может автоматически объединить запрос на вытягивание. (Это изменение сломало мой предыдущий подход к Auto-Merge, который проходил в том же рабочем процессе, что и мои обычные непрерывные проверки интеграции)

Рабочий процесс#

Сначала вам нужен рабочий процесс действий GitHub, который проверяет, что введенные изменения ничего не нарушают.

Этот рабочий процесс обычно запускает ваш тестовый набор или генерирует новую сборку вашего программного обеспечения.

В этой статье мы собираемся использовать мой Alfred Emoji Pack Проект в качестве примера. Это приложение PHP -консоли, которое генерирует пакет фрагментов смайликов для Альфред Анкет

Я позвонил в рабочий процесс «Интеграция» И это похоже на это:

name: Integrate

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  build:
    name: Build

    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          extension: zip, json

      - name: Install dependencies
        run: composer install --prefer-dist --no-interaction --no-suggest

      - name: Generate new Emoji Pack
        run: php app generate

Если вы новичок в действиях GitHub, этот синтаксис может выглядеть запутанным. Но не волнуйтесь, это легко понять. Приведенный выше код рассказывает Действия GitHub:

  • Запустить этот рабочий процесс всякий раз, когда совершается коммит Главный -Брэнк или при открытии запроса на привлечение или новый коммит выполняется в отношении запроса на привлечение.
  • Чтобы запустить этот рабочий процесс на сервере под управлением Ubuntu.
  • Установить PHP 8.0 и зависимости проекта
  • И выполнить Приложение PHP генерирует Чтобы создать новый пакет фрагментов

Этот простой рабочий процесс гарантирует, что приложение работает, как и ожидалось. В приложении с тестовым набором Phpunit вы бы запустили Продавец/bin/phpunit вместо Приложение PHP генерирует Анкет Или если вы работаете в узле, вы можете запустить что -то вроде NPM Run Test Анкет

Теперь, когда мы можем быть уверены, что ничто не сломается, когда Devideabot открывает запрос на вытяжение, мы хотим автоматически объединить его.

Для этого мы создаем новый рабочий процесс, который использует фантастический ROIDOTT/MERGE-ME Действие. Сначала создайте новый файл в .github/Workflows называется Auto-Merge.yml Анкет

Внутри мы добавляем следующий код:

name: Merge me!

on:
  workflow_run:
    types:
      - completed
    workflows:
      - 'Integrate'

jobs:
  merge-me:
    name: Merge me!

    runs-on: ubuntu-latest

    steps:
      - name: Merge me!
        if: ${{ github.event.workflow_run.conclusion == 'success' }}
        uses: ridedott/merge-me-action@v2
        with:
          # Depending on branch prodtection rules, a manually populated
          # `GITHUB_TOKEN_WORKAROUND` secret with permissions to push to
          # a protected branch must be used.
          #
          # When using a custom token, it is recommended to leave the following
          # comment for other developers to be aware of the reasoning behind it:
          #
          # This must be used as GitHub Actions token does not support pushing
          # to protected branches.
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PRESET: DEPENDABOT_MINOR

Код прямо из примера самого действия. Но я хотел бы быстро пройти рабочий процесс и объяснить, что он делает.

on:
  workflow_run:
    types:
      - completed
    workflows:
      - 'Integrate'

Вначале мы говорим рабочим процессам послушать завершен событие других рабочих процессов. Как вы можете видеть под рабочие процессы Массив, я добавил название моего ранее упомянутого рабочего процесса «интегрировать». Это означает, что это Рабочий процесс будет запущен, когда мой «интегральный» заполняется.

steps:
  - name: Merge me!
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    uses: ridedott/merge-me-action@v2
    with:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      PRESET: DEPENDABOT_MINOR

Рядом с ядром рабочего процесса. Перед ROIDEOTT/MERGE-ME-ACTION выполняется, мы проверяем, запускается ли «интеграция» — это вызвано это Рабочий процесс — был успешным. Это защищает нас от Auto слияния запросов Devingabot, которые нарушают наше заявление.

Поскольку в моем репозитории не используется защищенные ветви, я использую обеспечивает GitHub токена по умолчанию, используя секреты. Github_token . (Прочтите Merge-Me-Action Документы для получения более подробной информации о том, как использовать его с защищенными ветвями).

Предустановка установлен на DEVIVEBOT_MINOR . Это сообщит действию, чтобы автоматически объединить незначительные обновления зависимостей. Если вы хотите пойти по более безопасному маршруту, используйте DEVIVEBOT_PATCH только объединить обновления зависимостей патча. (Подробнее об этой функции в документах )

И это все! Совершить и протолкнуть новый Auto-Merge.yml Рабочий процесс для вашего репозитория GitHub, и когда появятся новые запросы на вытягивание Devidentabot, они будут автоматически объединены, если ваш тестовый набор или сборка будут успешными.

Пример обратного запроса#

Как упоминалось ранее, «интегральный» рабочий процесс взят из моего проекта «Альфред-Эмоджи-Пак». В #17 Вы находите запрос на тягу, который был создан Devidabot, а затем был автоматически объединен действиями GitHub.

Вывод#

Как вы можете видеть, добавление функции автоматического Merge в ваш репозиторий GitHub совсем не так сложно. Все, что вам нужно, — это существующий рабочий процесс, который проверяет, работает ли все в вашем приложении, и второй рабочий процесс, который «слушает» ваш первый рабочий процесс «непрерывной интеграции».

Я надеюсь, что нативная интеграция Devidebot в GitHub теперь достаточно стабилен, чтобы этот подход по -прежнему будет работать через 12 месяцев и сэкономит мне бесчисленные часы слияния запросов на притяжение.

Прежде чем я оставлю тебя, есть одна предостережение: Рабочий процесс «Auto-Merge» не будет отображаться в списке проверки запроса на вытягивание «проверки», так как рабочий процесс не запускается через pull_request Мероприятие.

  1. Я узнал о окончании предварительного просмотра Deventabot через запрос на вытягивание в My Dotfiles Repository Анкет ↩

Оригинал: «https://dev.to/_stefanzweifel/auto-merge-dependabot-pull-requests-49ia»