Линтование сообщений о фиксации PR с помощью Github Actions

Conventional Commits — это замечательная новинка, которая помогает сохранить чистоту и последовательность ваших сообщений о фиксации. Она также помогает автоматизировать процесс выпуска релизов. Но как обеспечить его соблюдение? Здесь на помощь приходит Github Actions. В этом посте я покажу вам, как использовать Github Actions для притирки ваших сообщений о фиксации.

Что такое обычное сообщение о фиксации?

Сообщение о фиксации — это краткое описание изменений, которые вы внесли в коммит. Оно обычно пишется в повелительном наклонении, в настоящем времени и должно быть менее 50 символов. Например, «Добавить новую запись в блог» — это хорошее сообщение о фиксации, а «Добавить материал» — нет.

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

Некоторые примеры:

 feat: add a new blog post
 fix: fix a typo in the README file
 chore: update dependencies
Вход в полноэкранный режим Выйти из полноэкранного режима

Почему я должен линтировать свои сообщения о фиксации?

Линтование сообщений фиксации — это отличный способ обеспечить соблюдение спецификации Conventional Commits. Она помогает сохранить сообщения фиксации чистыми и последовательными. Это также помогает автоматизировать процесс выпуска. 😎

Как это помогает в процессе выпуска?

Когда вы используете Conventional Commits, вы можете использовать такие инструменты, как semantic-release. Это инструмент, который автоматически генерирует сообщения о выпуске и публикует новую версию вашего пакета в npm. Он использует сообщения о фиксации для определения типа изменений, которые были внесены в новую версию. Например, если последнее сообщение о фиксации было feat: add a new blog post, semantic-release будет знать, что была добавлена новая функция, и увеличит номер минорной версии.

Создание действия фиксации для линтинга PRs

Давайте сначала создадим действие на Github, которое будет автоматически проверять, соответствуют ли PR-сообщения соглашению о фиксации.
Сначала создайте новый файл commit-lint.yml в каталоге .github/workflows. Вот пример.

name: PR Lint

on:
  pull_request:
    types: [opened, edited, reopened, synchronize, ready_for_review]
    branches: [main]

  workflow_dispatch:

jobs:
  pr-lint:
    name: Validate PR commit title meets commit convention
    runs-on: ubuntu-latest
    steps:
      - uses: amannn/action-semantic-pull-request@v4.5.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          validateSingleCommit: true
          validateSingleCommitMatchesPrTitle: true
Вход в полноэкранный режим Выход из полноэкранного режима

Мы используем действие amannn/action-semantic-pull-request для линтинга наших сообщений фиксации. Это действие Github, которое проверяет заголовки pull request на соответствие спецификации Conventional Commits. Для этого требуется сначала установить токен Github. Кроме того, есть несколько опций, которые мы можем установить:

  • Опция validateSingleCommit гарантирует, что PR содержит только один коммит.
  • Опция validateSingleCommitMatchesPrTitle гарантирует, что сообщение о фиксации соответствует заголовку PR.

Вот и все! Теперь, когда бы вы ни открыли PR, действие будет проверять, соответствует ли сообщение о фиксации соглашению о фиксации. Если это не так, действие будет выполняться до тех пор, пока сообщение не будет исправлено.

Вот и все!

Оцените статью
devanswers.ru
Добавить комментарий