6.5 KiB
Правила работы агента
⛔⛔⛔ DOCKER — ОБЯЗАТЕЛЬНЫЙ ПОРЯДОК ПЕРЕД КАЖДЫМ BUILD
- УВЕЛИЧИТЬ ТЕГ в
deploy/lang.yaml(vX.Y.Z → vX.Y.Z+1) - rsync на ВМ
- ПРОВЕРИТЬ что файлы на ВМ новые (grep ключевой строки)
- docker build с НОВЫМ тегом
- docker push с НОВЫМ тегом
- kubectl apply (не rollout restart — apply подтягивает новый тег)
НИКОГДА не делать docker build со старым тегом — под не перетянет образ (imagePullPolicy: IfNotPresent)
Файловая система (актуально)
-
Все файлы редактируются локально:
~/lang -
После любых изменений — обязательно rsync на ВМ: rsync -az
-e "ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=10"
/lang//terra/lang/
naeel@5.172.178.213: -
Git (add/commit/push) выполнять ЛОКАЛЬНО в ~/lang
-
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/thinking/— лог рассуждений агента (обязательно)doc/progress.md— трекер задач- Старые файлы
doc/не перезаписывать — новое в новых файлах с датой
Git
⛔⛔⛔ АБСОЛЮТНОЕ ПРАВИЛО:
- Git — ТОЛЬКО ЛОКАЛЬНО в
~/lang. НИКОГДА через SSH на VM. - Разрешены ТОЛЬКО две операции:
git commitиgit push. - ЗАПРЕЩЕНО: git pull, git fetch, git rebase, git merge, git reset, git stash, git checkout — что угодно кроме 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 и читать её вывод напрямую.
- НИКОГДА не читать буфер терминала из предыдущей сессии как актуальные данные.
- Актуальный результат — только из команды, которая была запущена СЕЙЧАС.
Документация тест-прогонов — В РЕАЛЬНОМ ВРЕМЕНИ
Правила:
- Перед запуском
run_all.sh— создать файлtest-results/YYYY-MM-DD_HH-MM.logи записать в него метку времени и что запускается. - Запускать
run_all.sh 2>&1 | tee ~/terra/lang/test-results/YYYY-MM-DD_HH-MM.log— вывод пишется сразу в файл и отображается в терминале. - После завершения — rsync лога локально. Лог остаётся как документация.
- Папка
test-results/в репозитории —.gitignoreне добавлять, логи коммитить.
Формат запуска:
LOG="test-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/lang/scripts/run_all.sh 2>&1 | tee ~/terra/lang/${LOG}"
rsync -az -e "ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no" \
naeel@5.172.178.213:~/terra/lang/test-results/ ~/lang/test-results/
Никогда не разбираться с результатами по памяти / буферу / чату. Только лог.
⛔ РУЧНЫЕ ПАТЧИ — ЗАПРЕЩЕНЫ
- НИКОГДА не применять ручные патчи (
kubectl patch,kubectl applyотдельных полей,python -cзамены в yaml и т.д.) без явного указания. - Все изменения — только через код (Helm chart, YAML, Go-код) + сборка + деплой.
- Ручной патч слетает при следующем helm upgrade/redeploy → регрессия.
- Исключение: только если пользователь явно написал "примени ручной патч".
Поведение агента
- Не трогать рабочий код без явного указания
- Не делать НИЧЕГО сверх того, о чём явно приказали — ни git-команд, ни rebase, ни дополнительных шагов
- Если для продолжения нужен выбор — СПРОСИТЬ разрешения, не делать самостоятельно
- Деструктивные операции (
kubectl delete,rm -rf,terraform destroyи др.) — только после явного подтверждения с указанием конкретных объектов - Отвечать кратко, без вступлений, извинений, благодарностей и прочей воды