Changelogger - это консольный инструмент, который автоматически генерирует блок для CHANGELOG.md по git-коммитам.
Go-версия поставляется как один бинарник и не требует PHP, Composer или Packagist на машине пользователя.
Для работы Changelogger нужны:
- Git;
- репозиторий с ветками
developиorigin/master; - git tags в формате
X.Y.Z, например1.24.5; - глобальный config пользователя;
- файл
CHANGELOG.mdв корне проекта или путь к нему в global config /.env.
Для установки или обновления выполните:
curl -fsSL https://github.com/SolasWyrd/changelogger/releases/latest/download/changelogger-install | shInstaller сам определит ОС и установит бинарник в:
/usr/local/bin/changelogger
Если нужен другой каталог установки:
curl -fsSL https://github.com/SolasWyrd/changelogger/releases/latest/download/changelogger-install | CHANGELOGGER_INSTALL_DIR="$HOME/bin" shПосле установки команда доступна из любого проекта:
changeloggerДля обновления до последнего GitHub Release:
changelogger updateСоздайте файл:
~/.config/changelogger/config.json
Минимальный config:
{
"taskSystemLink": "https://helpdesk.efko.ru/tasks/view?code={code}",
"changelogPath": "./CHANGELOG.md"
}taskSystemLink можно указывать в одном из форматов:
https://helpdesk.efko.ru/tasks/view?code=
https://helpdesk.efko.ru/tasks/view?code={code}
https://helpdesk.efko.ru
Если global config отсутствует, Changelogger создаст его с этим содержимым автоматически.
Настройки поведения можно менять без ручного редактирования файла:
changelogger configПосмотреть текущие настройки:
changelogger config showНастроить ссылки на заявки:
changelogger config task-link ask
changelogger config task-link always
changelogger config task-link neverНастроить создание commit:
changelogger config commit ask
changelogger config commit always
changelogger config commit neverНастроить способ записи changelog:
changelogger config changelog ask
changelogger config changelog current
changelogger config changelog branchСбросить сохраненный выбор:
changelogger config resetЛокальный .env не обязателен. Changelogger автоматически определяет:
- ссылку на теги из
git remote get-url origin; - префикс ветки из коммитов, например
HRиз[HR-IU291518-W1026701].
Если префикса системы нет, например [IU291518-W1026701], ветка будет создана без него.
Если нужно переопределить автоматическое определение, добавьте .env:
REPOSITORY_LINK=https://gitlab.some.ru/your.repo.ru/-/tags/
BRANCH_PREFIX=MYPROJECTЕсли .env нет, Changelogger создаст шаблон:
# Changelogger project config
# Optional overrides. Changelogger detects repository link and branch prefix automatically.
# REPOSITORY_LINK=
# BRANCH_PREFIX=
# CHANGELOG_PATH=./CHANGELOG.md
# TASK_SYSTEM_LINK=https://helpdesk.efko.ru/tasks/view?code={code}Любую строку можно раскомментировать, если проекту нужен override global config или auto-detect.
Запускать нужно из каталога проекта:
changeloggerМожно явно передать ссылку на репозиторий до номера тега. В этом случае аргумент переопределит auto-detect и REPOSITORY_LINK из .env:
changelogger https://gitlab.some.ru/your.repo.ru/-/tags/При старте Changelogger собирает коммиты, показывает изменения, которые попадут в CHANGELOG.md, и предлагает версию:
Изменения которые попадут в CHANGELOG.md:
- Реализовано:
- Добавлен экспорт [Заявка](https://helpdesk.efko.ru/tasks/view?code=IU212256)
Текущая версия приложения: 1.24.5
Рекомендация: minor (есть feat)
Какую версию нужно поднять?
1 - major (*.0.0)
2 - minor (0.*.0)
3 - fix (0.0.*)
Enter - minor
>Рекомендация выбирается по изменениям:
- если есть
feat, предлагаетсяminor; - если
featнет, предлагаетсяfix.
Enter принимает рекомендацию. 1, 2, 3, major, minor, fix можно ввести вручную.
Затем Changelogger попросит ввести номер заявки и задачи в формате IU000000-W0111111.
Если нажать Enter, будет использована заявка-задача из последнего подходящего коммита.
Перед записью можно выбрать, как менять changelog:
- записать
CHANGELOG.mdв текущей ветке; - перейти на
developи создать новую ветку.
Если выбран второй вариант, будет создана ветка:
feature/MYPROJECT-IU000000-W0111111-assign-to-changelog
Если префикс не найден:
feature/IU000000-W0111111-assign-to-changelog
После создания ветки Changelogger попросит подтверждение записи в CHANGELOG.md.
Если несколько коммитов дают полностью одинаковую строку changelog, строка будет добавлена один раз.
В changelog попадают коммиты с префиксами:
| Ключ | Запись |
|---|---|
| feat | Реализовано |
| refactor | Изменено |
| change | Изменено |
| fix | Исправлено |
| remove | Удалено |
Секции всегда выводятся в регламентном порядке:
Реализовано
Изменено
Исправлено
Удалено
Описание после префикса поднимается с первой буквы в uppercase:
[IDPSPS-IU212256-W0835055] fix: исправлены опечаткиВ CHANGELOG.md попадет:
- Исправлены опечатки [Заявка](https://helpdesk.efko.ru/tasks/view?code=IU212256)Код заявки автоматически берется из префикса коммита. Например, из [HR-IU291518-W1026701] будет взят IU291518. Буквы заявки не привязаны к IU: из [HR-AB291518-W1026701] будет взят AB291518.
Префиксы refactor и change равнозначны и оба попадают в секцию Изменено:
[IDPSPS-IU212256-W0835055] change: обновлен расчет скидокВ CHANGELOG.md попадет:
- Изменено:
- Обновлен расчет скидок [Заявка](https://helpdesk.efko.ru/tasks/view?code=IU212256)Коммиты с другими префиксами не попадут в CHANGELOG.md, например:
wip - промежуточные коммиты в процессе работы
ci - настройки CI/CD
build - настройки окружения без пользовательского смысла# История изменений
## [ [1.1.0](https://gitlab.some.ru/your.repo.ru/-/tags/1.1.0) ] - 01.01.2023
- Реализовано:
- Отображение кода заявки [Заявка](https://helpdesk.efko.ru/tasks/view?code=IU212256)
- Учет параметра "Срочная доставка"
- Изменено:
- Дополнены правила расчета стоимости [Заявка](https://helpdesk.efko.ru/tasks/view?code=IU212300)
- Исправлено:
- Некорректные названия полей в форме [Заявка](https://helpdesk.efko.ru/tasks/view?code=IU212301)
- Удалено:
- Удален устаревший экран настроек [Заявка](https://helpdesk.efko.ru/tasks/view?code=IU212302)После записи CHANGELOG.md программа предложит:
- создать commit;
- push ветки;
- удалить локальную ветку после push.
Если на вопрос ответить n, действие будет отменено. Изменения можно будет завершить вручную.
Для локальной сборки нужен Go:
go build -o ./bin/changelogger ./cmd/changeloggerПроверка:
go test ./...Релиз публикуется автоматически через GitHub Actions после push тэга:
git tag 1.2.3
git push origin 1.2.3Workflow создаст GitHub Release и приложит файлы:
changelogger-darwin-universal
changelogger-linux-amd64
changelogger-install
checksums.txt
Локально собрать release-артефакты можно так:
./scripts/build-release.shСкрипт создаст:
dist/changelogger-darwin-universal
dist/changelogger-linux-amd64
dist/changelogger-install
dist/checksums.txt
После публикации проверьте установку:
curl -fsSL https://github.com/SolasWyrd/changelogger/releases/latest/download/changelogger-install | sh
changeloggerЛокально проверить installer без GitHub Releases можно так:
./scripts/build-release.sh
CHANGELOGGER_BASE_URL="file://$PWD/dist" CHANGELOGGER_INSTALL_DIR="$HOME/bin" ./changelogger-install