feat: add CI gitea
CI Check / lint-and-check (push) Has been cancelled

This commit is contained in:
Dmitry Belan
2026-07-14 17:07:21 +03:00
parent 5591222f7f
commit b14f14147f
7 changed files with 220 additions and 90 deletions
+41 -81
View File
@@ -1,87 +1,47 @@
# 🌱 Farm Automation System
# Контрольные работы: Игорь
Учебный проект для практики работы с Git: слияние конфликтов и интерактивный ребейз.
Добро пожаловать в рабочее пространство для выполнения контрольных работ. В этом репозитории мы учимся писать чистый, качественный и работающий код, используя современные инструменты разработки.
## Описание проекта
## 🛠 Технологический стек
* **Язык**: Python
* **Автоматизация (CI)**: Gitea Actions
* **Контроль качества**: Ruff (линтер)
* **Стандарты коммитов**: Commitizen
Простая система автоматизации гидропонной фермы на Python с использованием ООП:
- **BioCulture** — класс биокультуры со стадиями роста ("Зеленый" → "Красный")
- **HydroponicModule** — модуль, управляющий несколькими культурами
- **FarmAgent** — агент-оператор для управления модулем и сбора урожая
## Структура проекта
```
Igor-kr/
├── main.py # Точка входа
├── farm_core/
│ ├── __init__.py
│ ├── module.py # Классы BioCulture и HydroponicModule
│ └── agent.py # Класс FarmAgent
└── README.md
```
## Ветки
- **main** — базовая заготовка со "сломанным" методом `grow()` (вызывает `NotImplementedError`)
- **feature-api** — рабочая реализация метода `grow()` и новая функция `harvest()`
## 🎯 Практические задания
### Задание 1: Разрешение конфликтов при слиянии
**Цель:** Научиться разрешать merge conflicts.
**Шаги:**
1. Убедитесь, что вы на ветке `main`
2. Попытайтесь слить ветку `feature-api`
3. **Ожидаемый результат:** Конфликт в файле `farm_core/module.py` в методе `grow()`:
- В `main`: `raise NotImplementedError("Рост не реализован в main!")`
- В `feature-api`: `self._stage = "Красный"`
4. Откройте файл `farm_core/module.py` и разрешите конфликт
5. Завершите слияние
### Задание 2: Интерактивный ребейз (очистка истории)
**Цель:** Научиться объединять "мусорные" коммиты в один чистый коммит.
**Шаги:**
1. Переключитесь на ветку `feature-api`
2. Посмотрите на историю коммитов (вы увидите три мусорных коммита: done, fix2, fix)
3. Запустите интерактивный ребейз для последних 3 коммитов
4. Объедините три мусорных коммита в один
5. Проверьте результат — вместо трех мусорных коммитов должен быть один чистый коммит
### Задание 3 (дополнительно): Проверка работы кода
1. Переключитесь на `main` после успешного слияния
2. Допишите в `main.py` цикл для проверки работы:
```python
for culture in module.cultures:
culture.grow()
print(f"Готово к сбору: {agent.harvest()} культур(ы)")
```
3. Запустите код
**Ожидаемый вывод:**
```
Инструкция: pH 6.0
Готово к сбору: 3 культур(ы)
```
## ✅ Критерии успешного выполнения
- [ ] Конфликт в `module.py` успешно разрешен
- [ ] Метод `grow()` работает корректно (изменяет стадию на "Красный")
- [ ] Три мусорных коммита объединены в один
- [ ] История коммитов чистая и понятная
- [ ] Код запускается без ошибок
## 📋 Статус проверок
[![Gitea Actions Status](https://gitea.dimong.ru/Dimong4/Igor-kr/actions/workflows/ci.yaml/badge.svg)](https://gitea.dimong.ru/Dimong4/Igor-kr/actions)
---
**Автор:** Dmitry Belan
**Дата:** 2026-07-01
## 🚀 Как работать с этим репозиторием
### 1. Подготовка окружения
Перед началом работы убедись, что у тебя установлены:
* **Git** — для управления версиями.
* **Python 3.x** — для написания кода.
* **pip** — для установки зависимостей.
### 2. Установка зависимостей
Если твое решение требует дополнительных библиотек:
1. Создай файл `requirements.txt` в корне проекта.
2. Установи зависимости командой: `pip install -r requirements.txt`.
3. Обязательно добавь все используемые библиотеки в `requirements.txt`, чтобы они корректно работали в среде автоматической проверки.
### 3. Рабочий процесс (Workflow)
1. **Создай новую ветку** для своей работы: `git checkout -b task-name`.
2. **Пиши код** и проверяй его локально.
3. **Сделай коммит**, соблюдая правила (Commitizen): `git commit -m "feat: добавил решение задачи №1"`.
4. **Отправь изменения** в репозиторий: `git push origin task-name`.
### 4. Проверка и сдача
* После `push` перейди на страницу репозитория во вкладку **Actions**.
* Если горит **зеленая галочка ✅** — работа прошла автоматический контроль качества.
* Если **красный крестик ❌** — открой логи задачи, исправь замечания линтера и запушь исправления.
* После успеха создай **Pull Request** из своей ветки в `main` для финальной проверки.
---
## 🎓 Правила
* **Чистота кода**: Игнорирование предупреждений линтера `Ruff` недопустимо.
* **Ветка main**: Прямые пуши в `main` запрещены. Ветка защищена правилами CI/CD.
* **Ответственность**: Ты несешь ответственность за свой код и его работоспособность в CI-среде.