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
71 changes: 71 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Сообщить об ошибке
description: Что-то работает не так, как должно
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Спасибо за отчёт. Чем точнее шаги воспроизведения, тем быстрее получится починить.

**Нашли уязвимость?** Не описывайте её здесь — воспользуйтесь [приватной формой](https://github.com/maximkr/TrackStudio/security/advisories/new), см. [SECURITY.md](https://github.com/maximkr/TrackStudio/blob/main/SECURITY.md).

- type: textarea
id: what-happened
attributes:
label: Что происходит
description: Опишите проблему и что вы ожидали увидеть вместо этого.
validations:
required: true

- type: textarea
id: steps
attributes:
label: Шаги воспроизведения
placeholder: |
1. Войти как ...
2. Открыть задачу ...
3. Нажать ...
4. Появляется ошибка ...
validations:
required: true

- type: input
id: version
attributes:
label: Версия TrackStudio
description: "Вывод `./gradlew printVersion` или значение `trackstudio.version` из развёрнутого приложения. Если неизвестна — укажите дату сборки или хеш коммита."
placeholder: "v6.0.0-56-g1764993"
validations:
required: true

- type: dropdown
id: deployment
attributes:
label: Способ развёртывания
options:
- Docker Compose
- Kubernetes
- Ручная установка в Tomcat
- Другое
validations:
required: true

- type: input
id: environment
attributes:
label: Окружение
description: Версия PostgreSQL, ОС хоста, браузер — то, что относится к делу.
placeholder: "PostgreSQL 17, Ubuntu 24.04, Firefox 130"

- type: textarea
id: logs
attributes:
label: Логи
description: "Относящийся к делу фрагмент из `docker compose logs trackstudio` или из логов Tomcat. Стектрейс целиком, если он есть."
render: text

- type: textarea
id: extra
attributes:
label: Дополнительно
description: Скриншоты, обходные пути, всё, что может помочь.
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
blank_issues_enabled: true
contact_links:
- name: Вопрос по установке или использованию
url: https://github.com/maximkr/TrackStudio/discussions
about: Для вопросов, а не для багов — обсуждения подходят лучше.
- name: Документация
url: https://github.com/maximkr/TrackStudio/wiki
about: Руководства по установке и настройке.
- name: Сообщить об уязвимости
url: https://github.com/maximkr/TrackStudio/security/advisories/new
about: Приватный канал. Не описывайте уязвимости в публичных issue.
46 changes: 46 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Предложить улучшение
description: Идея новой возможности или улучшения существующей
labels: ["enhancement"]
body:
- type: textarea
id: problem
attributes:
label: Какую задачу это решает
description: Опишите ситуацию, в которой сейчас неудобно. Что вы пытаетесь сделать и почему это не получается.
validations:
required: true

- type: textarea
id: solution
attributes:
label: Как это могло бы работать
description: Ваше предложение. Если представляете интерфейс — опишите или приложите набросок.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Что пробовали вместо этого
description: Обходные пути, настройки, скрипты — то, чем задача решается сейчас, если решается.

- type: dropdown
id: area
attributes:
label: Какой части системы касается
options:
- Задачи и рабочие процессы
- Права доступа и роли
- Фильтры и отчёты
- Уведомления и подписки
- REST API и интеграции
- Интерфейс
- Развёртывание и администрирование
- Другое

- type: checkboxes
id: contribution
attributes:
label: Участие
options:
- label: Я готов взяться за реализацию сам
41 changes: 41 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
version: 2

updates:
# Зависимости Gradle. Проект содержит много старых библиотек, поэтому
# обновления сгруппированы и ограничены по количеству PR — иначе dependabot
# завалит репозиторий десятками отдельных пулл-реквестов.
- package-ecosystem: gradle
directory: "/"
schedule:
interval: monthly
open-pull-requests-limit: 5
groups:
logging:
patterns:
- "org.slf4j:*"
- "ch.qos.logback:*"
hibernate:
patterns:
- "org.hibernate:*"
lucene:
patterns:
- "org.apache.lucene:*"
minor-and-patch:
update-types:
- minor
- patch
ignore:
# Struts 1.3.10 снят с поддержки в 2013 году, новых версий не будет.
# Уход с него — отдельная большая задача, а не обновление зависимости.
- dependency-name: "org.apache.struts:*"

# Версии GitHub Actions в workflow
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: monthly
open-pull-requests-limit: 5
groups:
actions:
patterns:
- "*"
24 changes: 24 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!-- Спасибо за вклад. Заполните то, что относится к вашему изменению, лишнее удалите. -->

## Что меняется

<!-- Кратко: что делает этот PR и зачем. -->

## Связанные issue

<!-- Например: Closes #12 -->

## Как проверить

<!-- Шаги, которыми ревьюер может убедиться, что всё работает. -->

## Скриншоты

<!-- Для изменений в интерфейсе — до и после. -->

## Чек-лист

- [ ] `./gradlew build` проходит локально
- [ ] Изменения схемы БД оформлены миграцией Liquibase (или схема не менялась)
- [ ] Обновлена документация — `README.md`, `docs/`, `AGENTS.md` (или не требуется)
- [ ] Изменение не затрагивает пункты из раздела «Требуют архитектурного ревью» в [CONTRIBUTING.md](../CONTRIBUTING.md), либо это обсуждалось в issue
101 changes: 101 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Release

# Запускается при пуше тега вида v6.0.1
# git tag v6.0.1 && git push origin v6.0.1
on:
push:
tags:
- 'v*'

permissions:
contents: write # создать GitHub Release
packages: write # запушить образ в GHCR

jobs:
release:
name: WAR + Docker образ
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
with:
# com.palantir.git-version определяет версию по тегам
fetch-depth: 0

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '21'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build WAR
run: ./gradlew --no-daemon build

- name: Set up Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
# Имя пакета в GHCR обязано быть в нижнем регистре,
# поэтому оно задано явно, а не через github.repository
images: ghcr.io/maximkr/trackstudio
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=raw,value=latest

- name: Build and push image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

# Ручные заметки пишем в файл: gh прикрепит их поверх автоматически
# сгенерированного списка изменений
- name: Подготовить описание релиза
run: |
cat > release-notes.md <<'EOF'
## Установка

### Docker

```bash
docker run -d -p 8080:8080 ghcr.io/maximkr/trackstudio:TAG_PLACEHOLDER
```

Приложению нужна PostgreSQL — готовая конфигурация в `docker-compose.yml`.

### WAR

Приложенный `TrackStudio.war` разворачивается в Tomcat 9+ на JDK 21.
Подробности — в [README](https://github.com/maximkr/TrackStudio#readme) и [вики](https://github.com/maximkr/TrackStudio/wiki).
EOF
sed -i "s/TAG_PLACEHOLDER/${GITHUB_REF_NAME}/" release-notes.md

- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "${GITHUB_REF_NAME}" \
build/libs/TrackStudio.war \
--title "${GITHUB_REF_NAME}" \
--notes-file release-notes.md \
--generate-notes
73 changes: 73 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Кодекс поведения участников

## Наше обязательство

Мы, участники и сопровождающие проекта, обязуемся сделать участие в сообществе свободным от притеснений для всех — независимо от возраста, телосложения, видимых или невидимых особенностей, гендерной идентичности и самовыражения, уровня опыта, образования, социально-экономического положения, национальности, внешности, расы, религии, сексуальной ориентации и идентичности.

Мы обязуемся действовать и взаимодействовать так, чтобы сообщество оставалось открытым, доброжелательным, разнообразным и здоровым.

## Наши стандарты

Примеры поведения, которое создаёт здоровую среду:

- проявление эмпатии и доброты к другим людям;
- уважение к чужому мнению, точке зрения и опыту;
- конструктивная обратная связь — и умение принимать её достойно;
- признание своих ошибок, извинения перед теми, кого они затронули, и извлечение уроков;
- ориентация на то, что лучше для сообщества в целом, а не только лично для нас.

Примеры неприемлемого поведения:

- сексуализированные высказывания, изображения и знаки внимания любого рода;
- троллинг, оскорбления, уничижительные комментарии, нападки на личность или на политические взгляды;
- публичные или личные притеснения;
- публикация чужой личной информации — физического адреса, электронной почты и прочего — без явного разрешения;
- любое иное поведение, которое обоснованно считается неуместным в профессиональной среде.

## Обязанности сопровождающих

Сопровождающие отвечают за разъяснение и применение этих стандартов и принимают справедливые корректирующие меры в ответ на поведение, которое считают неуместным, угрожающим, оскорбительным или вредным.

Сопровождающие вправе удалять, редактировать и отклонять комментарии, коммиты, код, правки вики, issue и другие материалы, не соответствующие настоящему кодексу, и обязуются объяснять причины модерации, когда это уместно.

## Область применения

Кодекс действует во всех пространствах проекта, а также в случаях, когда человек официально представляет проект в публичном пространстве — например, пишет с официального адреса, с официального аккаунта в соцсетях или выступает как представитель проекта на мероприятии.

## Применение

О случаях оскорбительного, притесняющего или иного неприемлемого поведения сообщайте сопровождающему проекта — [@maximkr](https://github.com/maximkr). Все жалобы будут рассмотрены оперативно и справедливо.

Сопровождающие обязаны уважать приватность и безопасность того, кто сообщил об инциденте.

## Руководство по применению

### 1. Исправление

**Нарушение:** использование неуместных выражений или иное поведение, признанное непрофессиональным или нежелательным.

**Последствие:** частное письменное предупреждение с разъяснением характера нарушения. Может быть запрошено публичное извинение.

### 2. Предупреждение

**Нарушение:** нарушение в результате одного инцидента или серии действий.

**Последствие:** предупреждение с описанием последствий продолжения. Отсутствие взаимодействия с вовлечёнными лицами в течение определённого срока. Нарушение этих условий может привести к временному или постоянному запрету.

### 3. Временный запрет

**Нарушение:** серьёзное нарушение стандартов сообщества, в том числе устойчивое неприемлемое поведение.

**Последствие:** временный запрет на любое взаимодействие и публичное общение с сообществом. Нарушение условий может привести к постоянному запрету.

### 4. Постоянный запрет

**Нарушение:** систематическое нарушение стандартов сообщества, притеснение отдельных лиц, агрессия или уничижение по отношению к группам людей.

**Последствие:** постоянный запрет на любое публичное взаимодействие в рамках сообщества.

## Атрибуция

Настоящий кодекс основан на [Contributor Covenant](https://www.contributor-covenant.org/) версии 2.1, доступном по адресу https://www.contributor-covenant.org/version/2/1/code_of_conduct.html

Руководство по применению вдохновлено [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
Loading
Loading