|
| 1 | +--- |
| 2 | +name: release-notes |
| 3 | +description: This skill creates release notes for new release by reading git commit log. Use it only when explicitly specified |
| 4 | +--- |
| 5 | + |
| 6 | +# Release notes |
| 7 | + |
| 8 | +Когда нужно выпустить новый релиз, в репозитории нужно изменить файл install/release-notes.md (путь относительно корня репозитория) |
| 9 | + |
| 10 | +Для того, чтобы собрать данные, нужно использовать git log и вызвать команду |
| 11 | + |
| 12 | +```bat |
| 13 | +set LC_ALL=C.UTF-8 |
| 14 | +set TAGNAME=%1 |
| 15 | +
|
| 16 | +git --no-pager log --pretty="* %%s" --no-merges %TAGNAME%..HEAD |
| 17 | +``` |
| 18 | + |
| 19 | +где переменная TAGNAME должна быть git-тэгом предыдущего релиза. Результатом выполнения команды будут тексты коммитов, между TAGNAME и текущим состоянием ветки. |
| 20 | + |
| 21 | +Ты должен запросить у пользователя тег предыдущей версии, либо пользователь тебе сообщит его в промпте сразу. |
| 22 | + |
| 23 | +Далее, ты должен прочитать тексты коммитов, в них могут встречаться ссылки на github issues в виде указания номера задачи через решетку, например вот так: |
| 24 | + |
| 25 | +`fixes #1234 bla-bla-bla` |
| 26 | + |
| 27 | +Текст коммита также может не содержать упоминания задачи, или быть вовсе техническим/промежуточным коммитом, который в release notes попадать не должен, т.к. не описывает конечное изменение. |
| 28 | + |
| 29 | +Твоя задача и цель - взять тексты коммитов и вывести из них изменения в версии, которые будут включены в файл install/release-notes.md. |
| 30 | + |
| 31 | +Те коммиты, которые содержат ссылки на github - пойти на github в соответствующую задачу в репозитории https://github.com/EvilBeaver/OneScript/issues/<НомерЗадачи> и прочитать ее суть. |
| 32 | + |
| 33 | +Те коммиты, которые ссылок на гитхаб не содержат, ты должен просто прочитать и решить - стоит их включать в release-notes или нет, содержат ли они описание конкретной сделанной функциональности, или это промежуточный, технический и не требующий публикации коммит. |
| 34 | + |
| 35 | +Далее, ты должен сделать итоговый дайджест того, что было сделано в версии и записать это в файл install/release-notes.md. Каждая задача это отдельный bullet-point, причем ссылки на github должны быть сделаны в markdown реальными кликабельными ссылками. |
| 36 | + |
| 37 | +## Формат файла release-notes |
| 38 | + |
| 39 | +В начале записывается заголовок "Версия <НомерВерсии>. Какая сейчас конкретно версия ты должен посмотреть в файле Jenkinsfile в параметре VersionPrefix и взять его. |
| 40 | + |
| 41 | +Далее идет перечень сделанных задач, как описано выше. |
| 42 | +Задачи разбиваются на две группы: исправление ошибок и новые возможности. Соответственно в release notes добавляются два раздела уровня "заголовок 2" для "Новые возможности" и "Исправление ошибок". Если задач по какой-то категории нет (например, были только исправления, а новых фич не было), то соответствующий раздел не добавляется в файл совсем. |
| 43 | + |
| 44 | +## Instructions |
| 45 | + |
| 46 | +1. Определи текущую выпускаемую версию, прочитав файл Jenkinsfile и его параметр VersionPrefix в самом начале |
| 47 | +2. Определи тег предыдущей версии. Для этого запроси его у пользователя, если тег не был сразу задан в промпте |
| 48 | +3. Выполни команду gitlog, как показано выше, для получения истории коммитов между версиями |
| 49 | +4. Составь дайджест изменений и запиши их в install/release-notes.md |
0 commit comments