7.8 KiB
Правила работы агента
⛔⛔⛔ НИКАКИХ ПРЕДПОЛОЖЕНИЙ — ТОЛЬКО ФАКТЫ
АБСОЛЮТНОЕ ПРАВИЛО:
- Не выдавать предположения/допущения за факты.
- Говорить только то, что ПРОВЕРЕНО (прочитано, выполнено, подтверждено).
- Если не проверено — прямо писать «не проверено», не додумывать.
- Не строить выводы о реальном состоянии системы на основе манифестов/доков.
⛔⛔⛔ ВОПРОС = СТОП
Если в сообщении есть вопрос в ЛЮБОЙ форме:
- ТОЛЬКО ответить на вопрос
- ОСТАНОВИТЬСЯ
- ЖДАТЬ следующей команды ЗАПРЕЩЕНО начинать работу, писать код, запускать команды — без явного "делай".
⛔⛔⛔ DOCKER — ОБЯЗАТЕЛЬНЫЙ ПОРЯДОК ПЕРЕД КАЖДЫМ BUILD
⚠️ ЛЕГАСИ — старый k8s-деплой (kubectl apply). Уходим на Nubes Managed. ЭТИМ НЕ РУКОВОДСТВОВАТЬСЯ.
- УВЕЛИЧИТЬ ТЕГ в
deployments/k8s/deployment.yaml(vX.Y.Z → vX.Y.Z+1) - rsync на ВМ
- ПРОВЕРИТЬ что файлы на ВМ новые (grep ключевой строки)
- docker build с НОВЫМ тегом
- docker push с НОВЫМ тегом
- kubectl apply (не rollout restart — apply подтягивает новый тег)
НИКОГДА не делать docker build со старым тегом — под не перетянет образ (imagePullPolicy: IfNotPresent)
Файловая система (актуально)
-
Все файлы редактируются локально:
/home/naeel/nubes/SQS-service -
После любых изменений — обязательно rsync на ВМ: rsync -az
-e "ssh -i/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10"/terra/SQS-service/
/home/naeel/nubes/SQS-service/
naeel@5.172.178.213: -
Git (add/commit/push) выполнять ТОЛЬКО НА ВМ (через SSH) ПОСЛЕ синхронизации
-
Docker, kubectl и другие инфраструктурные команды — только через SSH на ВМ
-
Перед запуском любой команды на ВМ обязательно убедиться, что синхронизация (rsync) выполнена
-
SCP, sshfs, remote_dev и маунты больше НЕ используются
-
Только rsync для синхронизации
Пример:
- Редактируешь локально
- rsync на ВМ
- Выполняешь команды через SSH на ВМ
SSH
Все команды — только через SSH на ВМ. Локально — только читать и редактировать файлы.
ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10 naeel@5.172.178.213 'КОМАНДА'
Запрещено локально: go, docker, kubectl, helm, terraform, curl/wget, git push/pull, любые скрипты проекта.
Документация
doc/— документация проекта- Обновлять после каждого значимого изменения
- Старые файлы
doc/не перезаписывать — новое в новых файлах с датой
Git
⛔⛔⛔ АБСОЛЮТНОЕ ПРАВИЛО:
- Git — ТОЛЬКО НА ВМ (через SSH) ПОСЛЕ синхронизации rsync. НИКОГДА локально.
- Разрешены ТОЛЬКО операции:
git add,git commit,git push(на ВМ). - ЗАПРЕЩЕНО: git pull, git fetch, git rebase, git merge, git reset, git stash, git checkout — что угодно кроме add/commit/push.
- Если push отклонён — СТОП, доложить пользователю. Не лезть в pull/merge/rebase самостоятельно.
Версионирование тагами: vMAJOR.MINOR.PATCH
- Patch — любое изменение кода
- Minor — новая фича / компонент
- Major — breaking change
git tag vX.Y.Z && git push origin vX.Y.Z
⛔ ТЕРМИНАЛЬНЫЙ БУФЕР — НИКОГДА НЕ ЧИТАТЬ СТАРЫЙ
АБСОЛЮТНОЕ ПРАВИЛО:
- get_terminal_output из старых сессий — МУСОР. Там старые прогоны.
- Всегда запускать новую команду через SSH и читать её вывод напрямую.
- НИКОГДА не читать буфер терминала из предыдущей сессии как актуальные данные.
- Актуальный результат — только из команды, которая была запущена СЕЙЧАС.
⛔ ДОКУМЕНТАЦИЯ ТЕСТ-ПРОГОНОВ — В РЕАЛЬНОМ ВРЕМЕНИ
Правила:
- Перед запуском тестов — создать файл
tests/results/YYYY-MM-DD_HH-MM.logи записать в него метку времени и что запускается. - Запускать тесты с
2>&1 | tee ~/terra/SQS-service/tests/results/YYYY-MM-DD_HH-MM.log— вывод пишется сразу в файл и отображается в терминале. - После завершения — rsync лога локально. Лог остаётся как документация.
- Папка
tests/results/в репозитории — логи коммитить.
Формат запуска:
LOG="tests/results/$(date +%Y-%m-%d_%H-%M).log"
ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 \
"bash ~/terra/SQS-service/tests/run_tests.sh 2>&1 | tee ~/terra/SQS-service/${LOG}"
rsync -az -e "ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no" \
naeel@5.172.178.213:~/terra/SQS-service/tests/results/ /home/naeel/nubes/SQS-service/tests/results/
Никогда не разбираться с результатами по памяти / буферу / чату. Только лог.
⛔ РУЧНЫЕ ПАТЧИ — ЗАПРЕЩЕНЫ
- НИКОГДА не применять ручные патчи (
kubectl patch,kubectl applyотдельных полей,python -cзамены в yaml и т.д.) без явного указания. - Все изменения — только через код (манифесты, Go-код) + сборка + деплой.
- Ручной патч слетает при следующем helm upgrade/redeploy → регрессия.
- Исключение: только если пользователь явно написал "примени ручной патч".
Поведение агента
- Не трогать рабочий код без явного указания
- Не делать НИЧЕГО сверх того, о чём явно приказали — ни git-команд, ни rebase, ни дополнительных шагов
- Если для продолжения нужен выбор — СПРОСИТЬ разрешения, не делать самостоятельно
- Деструктивные операции (
kubectl delete,rm -rf,terraform destroyи др.) — только после явного подтверждения с указанием конкретных объектов - Отвечать кратко, без вступлений, извинений, благодарностей и прочей воды