Рубрики
Без рубрики

Auto-Update Предварительная коммитария крюки с действиями GitHub

Предварительные фиксирующие крючки приятно снизить цикл обратной связи для таких вещей, как прививка и автоматическое форматирование …. Помечено Python, преобладают, github, действиями.

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

Несколько инструментов существуют, чтобы решить эту проблему, но мой любимый – Предварительный коммит Отказ Это написано в Python, но это стремится быть Язык агностик . Он сохраняет вашу настройку в файле конфигурации, а разработчики могут устанавливать все из них одной командой.

Каждый инструмент ссылается на ITHUB REPO и тег для установки, что отлично, потому что каждый инструмент прикреплен к определенной версии. Однако у меня обычно есть версии инструмента уже в другом месте в моем репозитории, например, в требования .txt , вызывая некоторую дублирование. Основные проектные зависимости автоматически обновляются с помощью зависимостей, Pyup или Ремонт Но ни один из этих инструментов не поддерживает файл конфигурации предварительного коммита. Через некоторое время легко в конечном итоге с вариантами несоответствий.

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

name: Pre-commit auto-update

on:
  schedule:
    - cron: '0 0 * * *'

jobs:
  auto-update:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.8

      - name: Install pre-commit
        run: pip install pre-commit

      - name: Run pre-commit autoupdate
        run: pre-commit autoupdate

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v2
        with:
          token: ${{ secrets.CPR_GITHUB_TOKEN }}
          branch: update/pre-commit-autoupdate
          title: Auto-update pre-commit hooks
          commit-message: Auto-update pre-commit hooks
          body: |
            Update versions of tools in pre-commit 
            configs to latest version
          labels: dependencies

Этот рабочий процесс запланирован каждый день в полночь, работает Предварительный коммит autooupdate И отправляет запрос на тягу, если есть какие-либо изменения.

Кусок, который потребовал немного возобновления – это действие, создающее запрос на тягу, отчасти, чтобы получить сообщение, название, содержимое и метки, но в основном, потому что я изначально использовал секреты. Github_token Как токен, но это не будет вызвать постройку CI для этого потянутого запроса.

Это ограничение, которое хорошо задокументировано на Readme Action и намеренно от Github. Я выбрал решение, чтобы создать патент, находящуюся на место для репо и добавил его в секреты как Cpr_github_token. . Это развернуто и работает на репо Джанго-кодом Отказ

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

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

Я надеюсь, что это может помочь людям держать их предварительный коммит, может быть, это устареет, когда Pre-Compys CI готов или, возможно, это будет дешевле и проще альтернативой

Оригинал: “https://dev.to/browniebroke/auto-update-pre-commit-hooks-with-github-actions-3f84”