Auto Release — это GitHub Action на Deno, который:
- 🔍 Анализирует коммиты на директивы !release: major/minor/patch и !breaking
- ⚙️ Запускает команду линтинга и тестов через инпут LINT_AND_TESTS_COMMAND
- 📦 Собирает проект через команду BUILD_COMMAND
- 🏷️ Создаёт SemVer-тег и релиз в GitHub
- 📝 Генерирует CHANGELOG + AI-резюме (через OpenAI) ✍️
- 📂 Загружает артефакты по glob-шаблонам из ASSET_PATTERNS
- 📣 Отправляет уведомления в Discord через Webhook 💬
Добавьте шаг в свой workflow:
- name: Auto Release 🚀
uses: Shiro-nn/release-helper@master
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Сборка проекта
BUILD_COMMAND: "deno task build"
# Линт и тесты
LINT_AND_TESTS_COMMAND: "deno lint && deno test"
# Шаблоны артефактов
ASSET_PATTERNS: "dist/**/*.zip dist/**/*.tar.gz"
# Настройка ветки и релиза
ALLOWED_BRANCH: "main"
DRAFT_RELEASE: "false"
PRERELEASE: "false"
# Discord уведомления
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
🏷️ Параметр | Обязателен | По умолчанию | Описание |
---|---|---|---|
GITHUB_TOKEN |
✅ | — | Токен GitHub для тегов, релиза и загрузки артефактов |
LINT_AND_TESTS_COMMAND |
❌ | — (deno lint && deno test ) |
Команда для линтинга и тестов |
BUILD_COMMAND |
❌ | — (deno task build ) |
Команда сборки проекта |
ASSET_PATTERNS |
❌ | — | Glob‑шаблоны файлов‑артефактов для релиза (напр. dist/**/*.zip ) |
OPENAI_API_KEY |
❌ | — | Ключ OpenAI для AI‑резюме |
OPENAI_API_MODEL |
❌ | gpt-4 |
Модель OpenAI |
OPENAI_API_BASE_URL |
❌ | https://api.openai.com/v1/ |
Endpoint Chat Completions API |
ALLOWED_BRANCH |
❌ | main |
Разрешённая ветка для релизов |
DRAFT_RELEASE |
❌ | false |
Создавать черновик релиза? |
PRERELEASE |
❌ | false |
Помечать как prerelease? |
DISCORD_WEBHOOK |
❌ | — | URL Discord Webhook для уведомлений |
⚡ Совет: если у вас нет линтинга или тестов — оставьте
LINT_AND_TESTS_COMMAND
пустым. Action пропустит этот шаг.
name: Release
on:
push:
branches: [main]
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: denoland/setup-deno@v2
with:
cache: true
- name: Auto Release
uses: Shiro-nn/release-helper@master
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BUILD_COMMAND: "deno task build"
LINT_AND_TESTS_COMMAND: "deno lint && deno test"
ASSET_PATTERNS: "dist/**/*.zip"
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
-
📂 Проверка окружения
- Убедиться, что рабочая директория чиста и текущая ветка соответствует
ALLOWED_BRANCH
.
- Убедиться, что рабочая директория чиста и текущая ветка соответствует
-
🔍 Анализ коммита
- Поиск директивы !release: major/minor/patch или !breaking в сообщении последнего коммита.
-
📈 SemVer bump
- Вычисление новой версии на основании последнего релизного тега и типа релиза.
-
✅ Lint & Test
- Выполнение команды из
LINT_AND_TESTS_COMMAND
(например,deno lint && deno test
).
- Выполнение команды из
-
🛠️ Сборка проекта
- Выполнение
BUILD_COMMAND
(например,deno task build
).
- Выполнение
-
🏷️ Создание тега и релиза
- Создать git-тег и GitHub Release с опциями
DRAFT_RELEASE
/PRERELEASE
.
- Создать git-тег и GitHub Release с опциями
-
📝 CHANGELOG & AI-сводка
- Сформировать список изменений и сгенерировать AI-краткое резюме через
OpenAI (при наличии
OPENAI_API_KEY
).
- Сформировать список изменений и сгенерировать AI-краткое резюме через
OpenAI (при наличии
-
📂 Загрузка артефактов
- Загрузить все файлы, соответствующие шаблонам из
ASSET_PATTERNS
.
- Загрузить все файлы, соответствующие шаблонам из
-
📣 Уведомление в Discord
- Отправить POST-запрос на URL из
DISCORD_WEBHOOK
с телом{ "content": "..." }
.
- Отправить POST-запрос на URL из
⚠️ Shiro-nn/test-releases — сырая демонстрация работы действия без дополнительной полировки интерфейса.
Action | Описание |
---|---|
AI Commit Fixer | 🛠️ Автоматическое исправление сообщений коммитов по Conventional Commits с помощью ИИ |
AI Code Reviewer | 👀 Автоматическое ревью Pull Requests с рекомендациями от ИИ |
MIT License — см. файл LICENSE
для подробностей.