gitverse-release 2.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +199 -96
- package/dist/cli.js +1290 -4
- package/dist/cli.js.map +30 -3
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/package.json +38 -35
package/README.md
CHANGED
|
@@ -1,51 +1,54 @@
|
|
|
1
|
-
#
|
|
1
|
+
# GitVerse Release
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@gitverse/release)
|
|
3
|
+
[](https://www.npmjs.com/package/gitverse-release)
|
|
6
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://gitverse.ru/RainyPixel/gitverse-sdk)
|
|
6
|
+
|
|
7
|
+
Инструмент автоматизации релизов для GitVerse репозиториев с поддержкой Conventional Commits и семантического версионирования.
|
|
7
8
|
|
|
8
|
-
##
|
|
9
|
+
## Возможности
|
|
9
10
|
|
|
10
|
-
- ✅
|
|
11
|
-
- 📝
|
|
12
|
-
- 🌐
|
|
13
|
-
- 📦
|
|
14
|
-
- 🏷️
|
|
15
|
-
- 🔍
|
|
16
|
-
- ⚙️
|
|
11
|
+
- ✅ **Автоматическое версионирование** на основе Conventional Commits
|
|
12
|
+
- 📝 **Генерация CHANGELOG** с группировкой по типам коммитов
|
|
13
|
+
- 🌐 **Интеграция с GitVerse API** для создания релизов
|
|
14
|
+
- 📦 **Поддержка монорепозиториев** с независимым версионированием
|
|
15
|
+
- 🏷️ **Автоматические git теги и коммиты**
|
|
16
|
+
- 🔍 **Режим dry-run** для безопасного тестирования
|
|
17
|
+
- ⚙️ **Гибкая конфигурация** через `.gitversereleaserc.json`
|
|
17
18
|
|
|
18
|
-
##
|
|
19
|
+
## Установка
|
|
19
20
|
|
|
20
21
|
```bash
|
|
21
|
-
#
|
|
22
|
-
npm install -D
|
|
22
|
+
# npm
|
|
23
|
+
npm install -D gitverse-release
|
|
23
24
|
|
|
24
|
-
#
|
|
25
|
-
bun add -d
|
|
25
|
+
# bun
|
|
26
|
+
bun add -d gitverse-release
|
|
26
27
|
|
|
27
|
-
#
|
|
28
|
-
yarn add -D
|
|
28
|
+
# yarn
|
|
29
|
+
yarn add -D gitverse-release
|
|
29
30
|
|
|
30
|
-
#
|
|
31
|
-
pnpm add -D
|
|
31
|
+
# pnpm
|
|
32
|
+
pnpm add -D gitverse-release
|
|
32
33
|
```
|
|
33
34
|
|
|
34
|
-
##
|
|
35
|
+
## Быстрый старт
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
> ⚠️ **Важно:** Для создания релизов в GitVerse необходимо настроить `GITVERSE_TOKEN`. Без токена инструмент работает в урезанном режиме (только локальные теги и CHANGELOG). См. [Настройка GITVERSE_TOKEN](#️-настройка-gitverse_token)
|
|
38
|
+
|
|
39
|
+
### 1. Базовое использование
|
|
37
40
|
|
|
38
41
|
```bash
|
|
39
|
-
#
|
|
40
|
-
npx
|
|
42
|
+
# Создать релиз (dry-run для тестирования)
|
|
43
|
+
npx gitverse-release --dry-run
|
|
41
44
|
|
|
42
|
-
#
|
|
43
|
-
npx
|
|
45
|
+
# Создать и опубликовать релиз
|
|
46
|
+
npx gitverse-release
|
|
44
47
|
```
|
|
45
48
|
|
|
46
|
-
### 2.
|
|
49
|
+
### 2. Конфигурация
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
Создайте `.gitversereleaserc.json` в корне проекта:
|
|
49
52
|
|
|
50
53
|
```json
|
|
51
54
|
{
|
|
@@ -57,10 +60,10 @@ Create `.gitversereleaserc.json` in project root:
|
|
|
57
60
|
},
|
|
58
61
|
"changelog": {
|
|
59
62
|
"types": {
|
|
60
|
-
"feat": "✨
|
|
61
|
-
"fix": "🐛
|
|
62
|
-
"perf": "⚡
|
|
63
|
-
"docs": "📝
|
|
63
|
+
"feat": "✨ Новые возможности",
|
|
64
|
+
"fix": "🐛 Исправления",
|
|
65
|
+
"perf": "⚡ Производительность",
|
|
66
|
+
"docs": "📝 Документация"
|
|
64
67
|
},
|
|
65
68
|
"showHash": true,
|
|
66
69
|
"showAuthor": true
|
|
@@ -71,66 +74,72 @@ Create `.gitversereleaserc.json` in project root:
|
|
|
71
74
|
}
|
|
72
75
|
```
|
|
73
76
|
|
|
74
|
-
### 3.
|
|
77
|
+
### 3. Добавьте в package.json
|
|
75
78
|
|
|
76
79
|
```json
|
|
77
80
|
{
|
|
78
81
|
"scripts": {
|
|
79
|
-
"release": "
|
|
80
|
-
"release:dry": "
|
|
82
|
+
"release": "gitverse-release",
|
|
83
|
+
"release:dry": "gitverse-release --dry-run"
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
86
|
```
|
|
84
87
|
|
|
85
|
-
##
|
|
88
|
+
## Использование
|
|
86
89
|
|
|
87
90
|
### Conventional Commits
|
|
88
91
|
|
|
89
|
-
|
|
92
|
+
Инструмент автоматически определяет тип версии на основе коммитов:
|
|
90
93
|
|
|
91
94
|
```bash
|
|
92
95
|
# Patch (1.0.0 → 1.0.1)
|
|
93
|
-
git commit -m "fix:
|
|
96
|
+
git commit -m "fix: исправлена ошибка валидации"
|
|
94
97
|
|
|
95
98
|
# Minor (1.0.0 → 1.1.0)
|
|
96
|
-
git commit -m "feat:
|
|
99
|
+
git commit -m "feat: добавлен новый API эндпоинт"
|
|
97
100
|
|
|
98
101
|
# Major (1.0.0 → 2.0.0)
|
|
99
|
-
git commit -m "feat!:
|
|
100
|
-
#
|
|
101
|
-
git commit -m "feat:
|
|
102
|
+
git commit -m "feat!: изменен формат ответа API"
|
|
103
|
+
# или
|
|
104
|
+
git commit -m "feat: новая функция
|
|
102
105
|
|
|
103
|
-
BREAKING CHANGE:
|
|
106
|
+
BREAKING CHANGE: изменен формат конфигурации"
|
|
104
107
|
```
|
|
105
108
|
|
|
106
|
-
###
|
|
109
|
+
### Программное использование
|
|
107
110
|
|
|
108
111
|
```typescript
|
|
109
|
-
import { release } from "
|
|
112
|
+
import { release } from "gitverse-release";
|
|
110
113
|
|
|
111
|
-
//
|
|
114
|
+
// Простой релиз
|
|
112
115
|
const result = await release();
|
|
113
116
|
|
|
114
117
|
console.log(result.success); // true
|
|
115
118
|
console.log(result.newVersion); // "1.1.0"
|
|
116
119
|
console.log(result.tag); // "v1.1.0"
|
|
117
120
|
|
|
118
|
-
//
|
|
121
|
+
// С опциями
|
|
119
122
|
const result = await release(undefined, {
|
|
120
123
|
dryRun: true,
|
|
121
124
|
version: "2.0.0",
|
|
122
125
|
skipGitStatusCheck: false,
|
|
123
126
|
});
|
|
124
127
|
|
|
125
|
-
//
|
|
128
|
+
// Для монорепозитория
|
|
126
129
|
const result = await release("my-package", {
|
|
127
130
|
dryRun: false,
|
|
128
131
|
});
|
|
129
132
|
```
|
|
130
133
|
|
|
131
|
-
|
|
134
|
+
> **Примечание для GitVerse Actions:**
|
|
135
|
+
> В GitVerse Actions автоматически доступны переменные окружения:
|
|
136
|
+
> - `GITVERSE_TOKEN` - должен быть настроен в Secrets (см. [Настройка](#️-настройка-gitverse_token))
|
|
137
|
+
> - `GITVERSE_PUBLIC_API_URL` - автоматически доступен (`https://api.gitverse.ru/`)
|
|
138
|
+
> - `GITHUB_REPOSITORY` - имя репозитория в формате `owner/repo`
|
|
139
|
+
|
|
140
|
+
## Поддержка монорепозиториев
|
|
132
141
|
|
|
133
|
-
###
|
|
142
|
+
### Конфигурация
|
|
134
143
|
|
|
135
144
|
```json
|
|
136
145
|
{
|
|
@@ -156,32 +165,32 @@ const result = await release("my-package", {
|
|
|
156
165
|
}
|
|
157
166
|
```
|
|
158
167
|
|
|
159
|
-
###
|
|
168
|
+
### Использование
|
|
160
169
|
|
|
161
170
|
```bash
|
|
162
|
-
#
|
|
163
|
-
npx
|
|
171
|
+
# Релиз конкретного пакета
|
|
172
|
+
npx gitverse-release core
|
|
164
173
|
|
|
165
|
-
# Dry-run
|
|
166
|
-
npx
|
|
174
|
+
# Dry-run для пакета
|
|
175
|
+
npx gitverse-release ui --dry-run
|
|
167
176
|
```
|
|
168
177
|
|
|
169
|
-
###
|
|
178
|
+
### Фильтрация коммитов по scope
|
|
170
179
|
|
|
171
180
|
```bash
|
|
172
|
-
#
|
|
173
|
-
git commit -m "feat(core):
|
|
181
|
+
# Коммиты для пакета "core"
|
|
182
|
+
git commit -m "feat(core): добавлена новая функция"
|
|
174
183
|
|
|
175
|
-
#
|
|
176
|
-
git commit -m "fix(ui):
|
|
184
|
+
# Коммиты для пакета "ui"
|
|
185
|
+
git commit -m "fix(ui): исправлена ошибка компонента"
|
|
177
186
|
|
|
178
|
-
#
|
|
179
|
-
git commit -m "chore:
|
|
187
|
+
# Общие коммиты (влияют на все пакеты)
|
|
188
|
+
git commit -m "chore: обновлены зависимости"
|
|
180
189
|
```
|
|
181
190
|
|
|
182
|
-
##
|
|
191
|
+
## Конфигурация
|
|
183
192
|
|
|
184
|
-
###
|
|
193
|
+
### Полный пример
|
|
185
194
|
|
|
186
195
|
```json
|
|
187
196
|
{
|
|
@@ -193,16 +202,16 @@ git commit -m "chore: update dependencies"
|
|
|
193
202
|
},
|
|
194
203
|
"changelog": {
|
|
195
204
|
"types": {
|
|
196
|
-
"feat": "✨
|
|
197
|
-
"fix": "🐛
|
|
198
|
-
"perf": "⚡
|
|
199
|
-
"refactor": "♻️
|
|
200
|
-
"docs": "📝
|
|
201
|
-
"style": "💄
|
|
202
|
-
"test": "✅
|
|
203
|
-
"build": "🔧
|
|
205
|
+
"feat": "✨ Новые возможности",
|
|
206
|
+
"fix": "🐛 Исправления",
|
|
207
|
+
"perf": "⚡ Улучшения производительности",
|
|
208
|
+
"refactor": "♻️ Рефакторинг",
|
|
209
|
+
"docs": "📝 Документация",
|
|
210
|
+
"style": "💄 Стили",
|
|
211
|
+
"test": "✅ Тесты",
|
|
212
|
+
"build": "🔧 Сборка",
|
|
204
213
|
"ci": "👷 CI/CD",
|
|
205
|
-
"chore": "🧹
|
|
214
|
+
"chore": "🧹 Прочее"
|
|
206
215
|
},
|
|
207
216
|
"showHash": true,
|
|
208
217
|
"showAuthor": true
|
|
@@ -223,35 +232,88 @@ git commit -m "chore: update dependencies"
|
|
|
223
232
|
}
|
|
224
233
|
```
|
|
225
234
|
|
|
226
|
-
###
|
|
235
|
+
### Переменные окружения
|
|
227
236
|
|
|
228
237
|
```bash
|
|
229
|
-
# GitVerse
|
|
238
|
+
# Токен GitVerse для создания релизов
|
|
230
239
|
export GITVERSE_TOKEN="your-token-here"
|
|
231
240
|
|
|
232
|
-
#
|
|
241
|
+
# Или через .env файл
|
|
233
242
|
echo "GITVERSE_TOKEN=your-token" >> .env
|
|
234
243
|
```
|
|
235
244
|
|
|
236
|
-
|
|
245
|
+
### ⚠️ Настройка GITVERSE_TOKEN
|
|
246
|
+
|
|
247
|
+
**КРИТИЧЕСКИ ВАЖНО:** Без настройки `GITVERSE_TOKEN` инструмент работает в **урезанном режиме**:
|
|
248
|
+
|
|
249
|
+
✅ **С токеном (полный режим):**
|
|
250
|
+
- Автоматическое создание релизов в GitVerse
|
|
251
|
+
- Публикация changelog в релиз
|
|
252
|
+
- Загрузка ассетов релиза
|
|
253
|
+
- Push тегов и коммитов в удаленный репозиторий
|
|
254
|
+
|
|
255
|
+
⚠️ **Без токена (урезанный режим):**
|
|
256
|
+
- ❌ НЕТ создания релизов в GitVerse
|
|
257
|
+
- ✅ Генерация CHANGELOG локально
|
|
258
|
+
- ✅ Создание git тегов локально
|
|
259
|
+
- ✅ Коммиты изменений локально
|
|
260
|
+
|
|
261
|
+
#### Настройка токена для GitVerse Actions
|
|
262
|
+
|
|
263
|
+
**Важно:** `GITVERSE_TOKEN` **НЕ предоставляется автоматически** в GitVerse Actions!
|
|
264
|
+
|
|
265
|
+
**Шаг 1: Создайте Personal Access Token**
|
|
266
|
+
1. Перейдите в GitVerse: **Settings** → **Applications** → **Generate New Token**
|
|
267
|
+
2. Выберите необходимые права:
|
|
268
|
+
- `repo` - полный доступ к репозиториям (обязательно для релизов)
|
|
269
|
+
3. Скопируйте токен (показывается только один раз!)
|
|
270
|
+
|
|
271
|
+
**Шаг 2: Добавьте токен в Secrets репозитория**
|
|
272
|
+
1. В репозитории: **Settings** → **Secrets and Variables** → **Actions**
|
|
273
|
+
2. Нажмите **New repository secret**
|
|
274
|
+
3. **Name:** `GITVERSE_TOKEN`
|
|
275
|
+
4. **Value:** ваш Personal Access Token
|
|
276
|
+
5. Сохраните
|
|
277
|
+
|
|
278
|
+
**Шаг 3: Используйте в workflow**
|
|
279
|
+
```yaml
|
|
280
|
+
env:
|
|
281
|
+
GITVERSE_TOKEN: ${{ secrets.GITVERSE_TOKEN }}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**Шаг 4: Проверка (рекомендуется)**
|
|
285
|
+
```yaml
|
|
286
|
+
- name: Validate GITVERSE_TOKEN
|
|
287
|
+
run: |
|
|
288
|
+
if [ -z "$GITVERSE_TOKEN" ]; then
|
|
289
|
+
echo "❌ ERROR: GITVERSE_TOKEN is not set!"
|
|
290
|
+
echo "Please add GITVERSE_TOKEN to repository secrets."
|
|
291
|
+
exit 1
|
|
292
|
+
fi
|
|
293
|
+
echo "✅ GITVERSE_TOKEN is configured"
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## CLI опции
|
|
237
297
|
|
|
238
298
|
```
|
|
239
|
-
npx
|
|
299
|
+
npx gitverse-release [package] [options]
|
|
240
300
|
|
|
241
|
-
|
|
242
|
-
package
|
|
301
|
+
Аргументы:
|
|
302
|
+
package Имя пакета для релиза (для монорепозиториев)
|
|
243
303
|
|
|
244
|
-
|
|
245
|
-
--dry-run
|
|
246
|
-
--version <version>
|
|
247
|
-
--skip-git-check
|
|
248
|
-
--help
|
|
304
|
+
Опции:
|
|
305
|
+
--dry-run Запуск без внесения изменений
|
|
306
|
+
--version <version> Указать конкретную версию
|
|
307
|
+
--skip-git-check Пропустить проверку git статуса
|
|
308
|
+
--help Показать справку
|
|
249
309
|
```
|
|
250
310
|
|
|
251
|
-
## CI/CD
|
|
311
|
+
## CI/CD интеграция
|
|
252
312
|
|
|
253
313
|
### GitVerse Actions
|
|
254
314
|
|
|
315
|
+
⚠️ **Перед использованием:** Убедитесь, что `GITVERSE_TOKEN` добавлен в Secrets репозитория (см. [Настройка GITVERSE_TOKEN](#️-настройка-gitverse_token))
|
|
316
|
+
|
|
255
317
|
```yaml
|
|
256
318
|
name: Release
|
|
257
319
|
|
|
@@ -259,6 +321,7 @@ on:
|
|
|
259
321
|
workflow_dispatch:
|
|
260
322
|
|
|
261
323
|
env:
|
|
324
|
+
# ОБЯЗАТЕЛЬНО: Добавьте GITVERSE_TOKEN в Secrets репозитория!
|
|
262
325
|
GITVERSE_TOKEN: ${{ secrets.GITVERSE_TOKEN }}
|
|
263
326
|
|
|
264
327
|
jobs:
|
|
@@ -273,6 +336,17 @@ jobs:
|
|
|
273
336
|
|
|
274
337
|
- run: bun install
|
|
275
338
|
|
|
339
|
+
# ВАЖНО: Проверка наличия токена перед релизом
|
|
340
|
+
- name: Validate GITVERSE_TOKEN
|
|
341
|
+
run: |
|
|
342
|
+
if [ -z "$GITVERSE_TOKEN" ]; then
|
|
343
|
+
echo "❌ ERROR: GITVERSE_TOKEN is not set!"
|
|
344
|
+
echo "Please add GITVERSE_TOKEN to repository secrets."
|
|
345
|
+
echo "See: Settings → Secrets and Variables → Actions"
|
|
346
|
+
exit 1
|
|
347
|
+
fi
|
|
348
|
+
echo "✅ GITVERSE_TOKEN is configured"
|
|
349
|
+
|
|
276
350
|
- name: Configure Git
|
|
277
351
|
run: |
|
|
278
352
|
git config user.name "GitVerse CI"
|
|
@@ -282,20 +356,49 @@ jobs:
|
|
|
282
356
|
run: bun run release
|
|
283
357
|
```
|
|
284
358
|
|
|
285
|
-
|
|
359
|
+
**Что происходит в этом workflow:**
|
|
360
|
+
1. ✅ Проверяет наличие `GITVERSE_TOKEN` (workflow упадет с ошибкой, если токен не настроен)
|
|
361
|
+
2. ✅ Устанавливает зависимости
|
|
362
|
+
3. ✅ Настраивает git для создания коммитов
|
|
363
|
+
4. ✅ Создает релиз с полным функционалом (CHANGELOG, теги, GitVerse release)
|
|
364
|
+
5. ✅ Автоматически публикует в GitVerse
|
|
365
|
+
|
|
366
|
+
## Разработка
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# Установка зависимостей
|
|
370
|
+
bun install
|
|
371
|
+
|
|
372
|
+
# Запуск тестов
|
|
373
|
+
bun test
|
|
374
|
+
|
|
375
|
+
# Проверка покрытия
|
|
376
|
+
bun test:coverage
|
|
377
|
+
|
|
378
|
+
# Сборка проекта
|
|
379
|
+
bun run build
|
|
380
|
+
|
|
381
|
+
# Линтинг
|
|
382
|
+
bun run lint
|
|
383
|
+
bun run lint:fix
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
## Лицензия
|
|
286
387
|
|
|
287
|
-
MIT © RainyPixel
|
|
388
|
+
MIT © [RainyPixel](https://gitverse.ru/RainyPixel)
|
|
288
389
|
|
|
289
|
-
##
|
|
390
|
+
## Полезные ссылки
|
|
290
391
|
|
|
291
|
-
- [GitVerse SDK](https://gitverse.ru/RainyPixel/gitverse-sdk)
|
|
292
|
-
- [Conventional Commits](https://www.conventionalcommits.org/)
|
|
293
|
-
- [Keep a Changelog](https://keepachangelog.com/)
|
|
392
|
+
- [GitVerse SDK](https://gitverse.ru/RainyPixel/gitverse-sdk) - Основной репозиторий
|
|
393
|
+
- [Conventional Commits](https://www.conventionalcommits.org/ru/) - Спецификация
|
|
394
|
+
- [Keep a Changelog](https://keepachangelog.com/ru/) - Руководство по CHANGELOG
|
|
395
|
+
- [Semantic Versioning](https://semver.org/lang/ru/) - Семантическое версионирование
|
|
396
|
+
- [npm пакет](https://www.npmjs.com/package/gitverse-release)
|
|
294
397
|
|
|
295
|
-
##
|
|
398
|
+
## Сообщить об ошибке
|
|
296
399
|
|
|
297
|
-
|
|
400
|
+
Создайте issue на [GitVerse](https://gitverse.ru/RainyPixel/gitverse-sdk/issues)
|
|
298
401
|
|
|
299
402
|
---
|
|
300
403
|
|
|
301
|
-
|
|
404
|
+
Сделано с ❤️ для GitVerse
|