Skip to content

Commit e9beab9

Browse files
authored
Create CONTRIBUTING.md
1 parent c0e5292 commit e9beab9

File tree

1 file changed

+182
-0
lines changed

1 file changed

+182
-0
lines changed

CONTRIBUTING.md

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
# Contributing to HH OAuth2 Infrastructure
2+
3+
Спасибо за интерес к улучшению проекта! Вот руководство по внесению вклада.
4+
5+
## Как внести вклад
6+
7+
---
8+
<details close>
9+
<summary> 1. Сообщение об ошибках (Bug Reports)</summary>
10+
11+
# Перед созданием issue убедитесь, что:
12+
# - Проблема ещё не зарегистрирована
13+
# - Используете последнюю версию из `main`
14+
15+
# Шаблон issue для багов:
16+
# - Описание проблемы:
17+
# - Краткое описание
18+
19+
# Шаги для воспроизведения:
20+
# - Запустить...
21+
# - Выполнить...
22+
# - Наблюдать ошибку...
23+
24+
# Ожидаемое поведение:
25+
# - Что должно было произойти
26+
27+
# Окружение:
28+
# OS: Ubuntu 22.04
29+
# Bash: 5.1.16
30+
# nginx: 1.22.1
31+
# systemd: 249
32+
33+
# Логи:
34+
# [приложите логи journalctl]
35+
36+
</details>
37+
38+
<details close>
39+
<summary> 2. Предложения улучшений (Feature Requests)</summary>
40+
41+
# Перед предложением:
42+
# - Проверьте открытые issues
43+
# - Убедитесь, что функция соответствует scope проекта (инфраструктура OAuth2)
44+
45+
# Формат предложения:
46+
# - Описание проблемы, которую решает фича
47+
# - Предлагаемое решение
48+
# - Альтернативные варианты
49+
50+
</details>
51+
52+
<details close>
53+
<summary> 3. Pull Requests</summary>
54+
55+
56+
# !!! Требования !!!
57+
# Для скриптов:
58+
# - Используйте `#!/usr/bin/env bash`
59+
# - Включите `set -euo pipefail`
60+
# - Пройдите проверку ShellCheck (без ошибок)
61+
# - Добавьте комментарии к нетривиальному коду
62+
63+
# Для конфигураций:
64+
# - nginx конфиги должны проходить `nginx -t`
65+
# - systemd unit файлы должны быть валидными
66+
67+
# Для документации:
68+
# - Markdown должен быть корректным
69+
# - Обновите CHANGELOG.md
70+
71+
# !!! Процесс !!!
72+
# 1. Fork репозитория
73+
`git clone https://github.com/YOUR_USERNAME/hh-oauth2-keendns-nginx-systemd.git`
74+
`cd hh-oauth2-keendns-nginx-systemd`
75+
76+
# 2. Создайте feature branch
77+
`git checkout -b feature/your-feature-name`
78+
79+
# 3. Внесите изменения
80+
- Следуйте code style проекта
81+
- Добавьте комментарии
82+
- Обновите документацию
83+
84+
85+
# 4. Проверьте локально</summary>
86+
ShellCheck для скриптов
87+
`shellcheck scripts/*.sh`
88+
89+
nginx validation
90+
`sudo nginx -t -c nginx/nginx.conf`
91+
92+
93+
# 5. Commit с conventional commits</summary>
94+
`git commit -m "feat: add token refresh retry logic"`
95+
`git commit -m "fix: correct nginx proxy timeout"`
96+
`git commit -m "docs: update README smoke test section"`
97+
98+
# Типы коммитов:
99+
- `feat:` — новая функция
100+
- `fix:` — исправление бага
101+
- `docs:` — изменения в документации
102+
- `refactor:` — рефакторинг без изменения функциональности
103+
- `test:` — добавление тестов
104+
- `chore:` — обновление зависимостей, CI
105+
106+
107+
# 6. Push и создайте PR
108+
`git push origin feature/your-feature-name`
109+
# Откройте Pull Request в веб-интерфейсе GitHub
110+
111+
!!! Критерии принятия PR !!!
112+
113+
- ✅ CI проходит успешно (ShellCheck + nginx validation)
114+
- ✅ Код соответствует стилю проекта
115+
- ✅ Документация обновлена
116+
- ✅ CHANGELOG.md обновлён (для feat/fix)
117+
- ✅ Нет конфликтов с `main`
118+
119+
</details>
120+
121+
<details close>
122+
<summary> 4. Code Style</summary>
123+
124+
# !!! Bash скрипты: !!!
125+
# - Используйте 2 пробела для отступов
126+
# - Переменные в верхнем регистре для констант: `STATE_DIR="/var/lib/hh-token"`
127+
# - Локальные переменные в нижнем регистре
128+
# - Всегда цитируйте переменные: `"$VAR"` вместо `$VAR`
129+
130+
# !!! Пример: !!!
131+
```bash
132+
#!/usr/bin/env bash
133+
set -euo pipefail
134+
135+
readonly STATE_DIR="/var/lib/hh-token"
136+
local_var="example"
137+
138+
if [[ -f "$STATE_DIR/token.json" ]]; then
139+
echo "Token exists"
140+
fi
141+
```
142+
143+
# nginx конфигурация:
144+
# - 4 пробела для отступов
145+
# - Комментарии на английском
146+
# - Группировка директив по назначению
147+
148+
</details>
149+
150+
<details close>
151+
<summary> 5. Тестирование</summary>
152+
153+
# Локальное тестирование:
154+
155+
# Запустите smoke test после изменений
156+
`docker run -d --name test -p 8000:8000 ghcr.io/do6pbln9l/hh-oauth2-infra:latest`
157+
`curl -I http://localhost:8000/`
158+
`docker stop test && docker rm test`
159+
160+
# CI автоматически проверит:
161+
# - ShellCheck для всех .sh файлов
162+
# - nginx -t для конфигов
163+
164+
</details>
165+
166+
<details close>
167+
<summary> 6. Вопросы и обсуждения</summary>
168+
169+
# Используйте GitHub Discussions для:
170+
# - Вопросов по использованию
171+
# - Предложений архитектурных изменений
172+
# - Обсуждения лучших практик
173+
174+
</details>
175+
176+
## Лицензия
177+
178+
Внося вклад, вы соглашаетесь, что ваш код будет лицензирован под MIT License этого проекта.
179+
180+
---
181+
182+
**Благодарим за вклад в проект!** 🎉

0 commit comments

Comments
 (0)