Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Владельцы кода глобально
* @Gokujo

# Документация
docs/ @Gokujo

# GitHub workflows
.github/ @Gokujo

# Конфигурационные файлы
*.yml @Gokujo
*.yaml @Gokujo
requirements.txt @Gokujo
mkdocs.yml @Gokujo
10 changes: 2 additions & 8 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,12 @@ updates:
day: "sunday"
time: "02:00"
open-pull-requests-limit: 5
reviewers:
- "DevCraftClub"
assignees:
- "DevCraftClub"
- "Gokujo"
commit-message:
prefix: "chore"
include: "scope"
labels:
- "dependencies"
- "python"
ignore:
# Игнорируем major версии для критических зависимостей
Expand All @@ -33,13 +30,10 @@ updates:
day: "monday"
time: "03:00"
open-pull-requests-limit: 3
reviewers:
- "DevCraftClub"
assignees:
- "DevCraftClub"
- "Gokujo"
commit-message:
prefix: "ci"
include: "scope"
labels:
- "dependencies"
- "github-actions"
62 changes: 31 additions & 31 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Generate Changelog
name: Генерация изменений

on:
push:
Expand All @@ -10,12 +10,12 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Checkout code
- name: Клонирование кода
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Generate changelog
- name: Генерация изменений
id: changelog
uses: actions/github-script@v6
with:
Expand All @@ -27,22 +27,22 @@ jobs:
head: context.sha
});

let changelog = '# 📋 Changelog\n\n';
changelog += `## Version ${context.ref.replace('refs/tags/', '')}\n\n`;
changelog += `**Release Date:** ${new Date().toISOString().split('T')[0]}\n\n`;
let changelog = '# 📋 Журнал изменений\n\n';
changelog += `## Версия ${context.ref.replace('refs/tags/', '')}\n\n`;
changelog += `**Дата выпуска:** ${new Date().toISOString().split('T')[0]}\n\n`;

const categories = {
'feat': '🚀 Features',
'fix': '🐛 Bug Fixes',
'docs': '📚 Documentation',
'style': '💄 Style',
'refactor': '♻️ Refactoring',
'test': '🧪 Tests',
'chore': '🔧 Chores',
'feat': '🚀 Функции',
'fix': '🐛 Исправления багов',
'docs': '📚 Документация',
'style': '💄 Стиль',
'refactor': '♻️ Рефакторинг',
'test': '🧪 Тесты',
'chore': '🔧 Обслуживание',
'ci': '⚙️ CI/CD',
'perf': '⚡ Performance',
'build': '📦 Build',
'revert': '⏪ Reverts'
'perf': '⚡ Производительность',
'build': '📦 Сборка',
'revert': '⏪ Откаты'
};

const categorizedCommits = {};
Expand Down Expand Up @@ -86,36 +86,36 @@ jobs:
}

// Добавляем статистику
changelog += '## 📊 Statistics\n\n';
changelog += `- **Total commits:** ${commits.commits.length}\n`;
changelog += `- **Files changed:** ${commits.files ? commits.files.length : 'N/A'}\n`;
changelog += `- **Additions:** ${commits.stats ? commits.stats.additions : 'N/A'}\n`;
changelog += `- **Deletions:** ${commits.stats ? commits.stats.deletions : 'N/A'}\n\n`;
changelog += '## 📊 Статистика\n\n';
changelog += `- **Всего коммитов:** ${commits.commits.length}\n`;
changelog += `- **Изменено файлов:** ${commits.files ? commits.files.length : 'N/A'}\n`;
changelog += `- **Добавлено строк:** ${commits.stats ? commits.stats.additions : 'N/A'}\n`;
changelog += `- **Удалено строк:** ${commits.stats ? commits.stats.deletions : 'N/A'}\n\n`;

// Добавляем ссылки
changelog += '## 🔗 Links\n\n';
changelog += `- [Full diff](https://github.com/${context.repo.owner}/${context.repo.repo}/compare/main...${context.ref})\n`;
changelog += `- [Documentation](https://devcraftclub.github.io/mhdocs/)\n`;
changelog += '## 🔗 Ссылки\n\n';
changelog += `- [Полная разница](https://github.com/${context.repo.owner}/${context.repo.repo}/compare/main...${context.ref})\n`;
changelog += `- [Документация](https://devcraftclub.github.io/mhdocs/)\n`;
changelog += `- [Readme DevCraft](https://readme.devcraft.club)\n`;

core.setOutput('changelog', changelog);
console.log('Generated changelog:', changelog);
console.log('Сгенерирован журнал изменений:', changelog);

- name: Create changelog file
- name: Создание файла изменений
run: |
echo "${{ steps.changelog.outputs.changelog }}" > CHANGELOG.md

- name: Commit changelog
- name: Коммит изменений
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add CHANGELOG.md
git commit -m "docs: update changelog for ${{ github.ref_name }}" || echo "No changes to commit"
git commit -m "docs: обновление журнала изменений для ${{ github.ref_name }}" || echo "Нет изменений для коммита"
git push

- name: Upload changelog as artifact
uses: actions/upload-artifact@v3
- name: Загрузка журнала изменений как артефакт
uses: actions/upload-artifact@v4
with:
name: changelog-${{ github.ref_name }}
name: журнал-изменений-${{ github.ref_name }}
path: CHANGELOG.md
retention-days: 90
76 changes: 76 additions & 0 deletions .github/workflows/create-labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Создание меток репозитория

on:
workflow_dispatch: # Ручной запуск
push:
branches: [main]
paths:
- ".github/labels.yml"

jobs:
create-labels:
runs-on: ubuntu-latest
steps:
- name: Клонирование кода
uses: actions/checkout@v4

- name: Создание меток
uses: actions/github-script@v6
with:
script: |
const labels = [
{
name: 'python',
color: '3776ab',
description: 'Изменения связанные с Python'
},
{
name: 'github-actions',
color: '2088ff',
description: 'Изменения связанные с GitHub Actions'
},
{
name: 'documentation',
color: '0075ca',
description: 'Обновления документации'
},
{
name: 'enhancement',
color: 'a2eeef',
description: 'Новые функции или улучшения'
},
{
name: 'bug',
color: 'd73a4a',
description: 'Что-то не работает'
},
{
name: 'help wanted',
color: '008672',
description: 'Требуется дополнительное внимание'
},
{
name: 'good first issue',
color: '7057ff',
description: 'Подходит для новичков'
}
];

for (const label of labels) {
try {
await github.rest.issues.createLabel({
owner: context.repo.owner,
repo: context.repo.repo,
name: label.name,
color: label.color,
description: label.description
});
console.log(`✅ Создана метка: ${label.name}`);
} catch (error) {
if (error.status === 422) {
console.log(`ℹ️ Метка уже существует: ${label.name}`);
} else {
console.log(`❌ Ошибка создания метки ${label.name}:`, error.message);
}
}
}
47 changes: 35 additions & 12 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Deploy Documentation
name: Деплой документации

on:
push:
Expand All @@ -11,31 +11,54 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Checkout code
- name: Клонирование кода
uses: actions/checkout@v4
with:
fetch-depth: 0 # Получаем полную историю для git-revision-date плагина

- name: Set up Python
- name: Настройка Python
uses: actions/setup-python@v4
with:
python-version: "3.13"
cache: "pip"

- name: Install dependencies
- name: Установка зависимостей
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Build documentation
- name: Определение версии
id: version
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
# Для PR проверяем название на наличие версии
if [[ "${{ github.event.pull_request.title }}" =~ v[0-9]+\.[0-9]+\.[0-9]+ ]]; then
# Извлекаем версию из названия PR
VERSION=$(echo "${{ github.event.pull_request.title }}" | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+' | head -1)
echo "version=$VERSION" >> $GITHUB_OUTPUT
else
# Если версия не указана, используем dev
echo "version=dev" >> $GITHUB_OUTPUT
fi
else
# Для push в main используем dev
echo "version=dev" >> $GITHUB_OUTPUT
fi
echo "Используется версия: ${{ steps.version.outputs.version }}"

- name: Сборка документации
run: |
mkdocs build -c
mkdocs gh-deploy --force

- name: Deploy to GitHub Pages
- name: Деплой с mike
if: github.ref == 'refs/heads/main'
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./site
force_orphan: true
run: |
# Настраиваем git для mike
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"

# Деплоим с mike
mike deploy --push --update-aliases "${{ steps.version.outputs.version }}" latest

# Устанавливаем версию по умолчанию
mike set-default --push latest
Loading