Временно отключить production deploy и оставить диагностику fingerprint #56

Merged
admin merged 2 commits from fix/deploy-key-fingerprint-diagnostic into main 2026-10-06 07:08:05 +00:00
Collaborator

Временно отключает production deployment до установки отдельного deployment-доступа Workers. Push в main и pull_request в main продолжают запускать тесты. Upload release и Deploy and verify имеют безусловный if: ${{ false }} и недоступны для любого события и значения input, включая workflow_dispatch с diagnostic_only=false.

Ручной diagnostic_only=true запускает только job диагностики после тестов. После создания deploy_key CI получает публичный ключ через ssh-keygen -y и передаёт его по pipe в ssh-keygen -lf - -E sha256; stdout содержит только SHA256 fingerprint. Shell tracing отключён до обработки приватного ключа и в диагностическом шаге. Публичный ключ не сохраняется в файл/artifacts; временные deploy_key и known_hosts удаляются при завершении диагностики. При diagnostic_only=false или отсутствующем raw input job пропускается. Возврат deploy потребует отдельной reviewed правки; изменение input не может включить его.

Владелец подтвердил, что текущий PROD_SSH_KEY соответствует диагностическому codex_vps (SHA256:tYxgpQcfJNYolIHEc2CYZqlNON1llwyxD76Q0Kgo0Gg) с forced command infractl-helper. Эта правка не меняет ключ, secrets, SSH-настройки или VPS. Версия 0.10.6; README описывает переходный режим.

Проверки: 88 passed, 10 PostgreSQL skipped. Девять комбинаций push/pull_request/workflow_dispatch и true/false/отсутствующего input проверяют условия запуска; проверяется безусловное отключение обоих VPS-шагов и сохранение тестов push/PR. Fingerprint проверен с заглушкой ssh-keygen, без реальных ключей: stdout, отключение tracing, ошибка keygen, cleanup. YAML, bash -n всех run-блоков, node --check и git diff --check прошли. Тесты выполнены из изолированного cwd без чтения repository .env.

Workflow вручную не запускался; deployment/restart/production-import не выполнялись. Требуется повторное независимое review в отдельной сессии.

Временно отключает production deployment до установки отдельного deployment-доступа Workers. Push в main и pull_request в main продолжают запускать тесты. Upload release и Deploy and verify имеют безусловный if: ${{ false }} и недоступны для любого события и значения input, включая workflow_dispatch с diagnostic_only=false. Ручной diagnostic_only=true запускает только job диагностики после тестов. После создания deploy_key CI получает публичный ключ через ssh-keygen -y и передаёт его по pipe в ssh-keygen -lf - -E sha256; stdout содержит только SHA256 fingerprint. Shell tracing отключён до обработки приватного ключа и в диагностическом шаге. Публичный ключ не сохраняется в файл/artifacts; временные deploy_key и known_hosts удаляются при завершении диагностики. При diagnostic_only=false или отсутствующем raw input job пропускается. Возврат deploy потребует отдельной reviewed правки; изменение input не может включить его. Владелец подтвердил, что текущий PROD_SSH_KEY соответствует диагностическому codex_vps (SHA256:tYxgpQcfJNYolIHEc2CYZqlNON1llwyxD76Q0Kgo0Gg) с forced command infractl-helper. Эта правка не меняет ключ, secrets, SSH-настройки или VPS. Версия 0.10.6; README описывает переходный режим. Проверки: 88 passed, 10 PostgreSQL skipped. Девять комбинаций push/pull_request/workflow_dispatch и true/false/отсутствующего input проверяют условия запуска; проверяется безусловное отключение обоих VPS-шагов и сохранение тестов push/PR. Fingerprint проверен с заглушкой ssh-keygen, без реальных ключей: stdout, отключение tracing, ошибка keygen, cleanup. YAML, bash -n всех run-блоков, node --check и git diff --check прошли. Тесты выполнены из изолированного cwd без чтения repository .env. Workflow вручную не запускался; deployment/restart/production-import не выполнялись. Требуется повторное независимое review в отдельной сессии.
codex added 1 commit 2026-10-05 13:28:39 +00:00
fix: add deployment key fingerprint diagnostic mode
CI / test (pull_request) Successful in 9m13s
CI / deploy (pull_request) Has been skipped
b8a27758b6
agent approved these changes 2026-10-05 14:45:59 +00:00
Dismissed
agent left a comment
Collaborator

Независимое review head b8a27758b6 относительно main c975e7418b. Блокирующих замечаний не найдено. Origin сверён с admin/miem_workers. API reviewer: agent (id=7); автор PR и commit: codex (id=6), идентичности различаются.

  1. Input diagnostic_only объявлен как boolean с default=true. Для workflow_dispatch значение true включает диагностику; только строка false отключает её. Пустое/отсутствующее значение также оставляет диагностику включённой. В исходниках установленной Gitea 1.25.5 UI формирует boolean inputs через strconv.FormatBool, поэтому строковое сравнение корректно: https://github.com/go-gitea/gitea/blob/v1.25.5/routers/web/repo/actions/view.go#L790-L799 .
  2. В diagnostic_only=true пропускаются оба шага Upload release и Deploy and verify. Поэтому не выполняются scp, SSH, распаковка на VPS, установка cron, docker compose up, последующие SSH-команды проверки и удаления release. Prepare release работает локально на runner.
  3. set +x установлен до записи приватного ключа и в fingerprint step. ssh-keygen -y передаёт публичный ключ напрямую в ssh-keygen -lf - -E sha256; awk выводит только поле SHA256 fingerprint, без комментария/ключа. Публичный ключ не записывается в файл. Приватный deploy_key и known_hosts создаются в RUNNER_TEMP с mode 600; EXIT trap диагностического шага удаляет оба при успехе и ошибке. Release tar создаётся до записи ключей и из checkout; шагов upload-artifact нет. Это проверка кода, не подтверждение фактического fingerprint production secret.
  4. При ручном diagnostic_only=false команды обычного deployment сохранены. PR-событие deploy job не запускает. Push в feature-ветку CI не запускает по текущему фильтру push branches=[main].
  5. ВАЖНО: после merge этого PR в main возникнет push в main. После успешного test автоматически запустится обычный production deploy, поскольку для push DIAGNOSTIC_ONLY=false независимо от default input. Выполнятся scp, SSH, установка cron, docker compose up -d --build и проверки версии/health. Default=true защищает только ручной workflow_dispatch; merge не является диагностическим запуском. Это прежнее, явно сохранённое поведение, описанное в README.

Проверки: прочитан полный diff всех 6 файлов и полный workflow base/head; git diff --check без ошибок. Серверный статус указанного head: CI / test (pull_request) success, CI / deploy (pull_request) skipped. Новые тесты проверяют shell output/cleanup с заглушкой и наличие guards; реальный runner diagnostic_only ими не проверяется. Workflow вручную не запускался, SSH/scp и VPS не затрагивались, repository/workflow не изменялись. Approval относится к указанному head.

Независимое review head b8a27758b6fc64c3730dc73ba45f1a37654bde19 относительно main c975e7418be5a280dd49f9766bade8d4700c7bc3. Блокирующих замечаний не найдено. Origin сверён с admin/miem_workers. API reviewer: agent (id=7); автор PR и commit: codex (id=6), идентичности различаются. 1. Input diagnostic_only объявлен как boolean с default=true. Для workflow_dispatch значение true включает диагностику; только строка false отключает её. Пустое/отсутствующее значение также оставляет диагностику включённой. В исходниках установленной Gitea 1.25.5 UI формирует boolean inputs через strconv.FormatBool, поэтому строковое сравнение корректно: https://github.com/go-gitea/gitea/blob/v1.25.5/routers/web/repo/actions/view.go#L790-L799 . 2. В diagnostic_only=true пропускаются оба шага Upload release и Deploy and verify. Поэтому не выполняются scp, SSH, распаковка на VPS, установка cron, docker compose up, последующие SSH-команды проверки и удаления release. Prepare release работает локально на runner. 3. set +x установлен до записи приватного ключа и в fingerprint step. ssh-keygen -y передаёт публичный ключ напрямую в ssh-keygen -lf - -E sha256; awk выводит только поле SHA256 fingerprint, без комментария/ключа. Публичный ключ не записывается в файл. Приватный deploy_key и known_hosts создаются в RUNNER_TEMP с mode 600; EXIT trap диагностического шага удаляет оба при успехе и ошибке. Release tar создаётся до записи ключей и из checkout; шагов upload-artifact нет. Это проверка кода, не подтверждение фактического fingerprint production secret. 4. При ручном diagnostic_only=false команды обычного deployment сохранены. PR-событие deploy job не запускает. Push в feature-ветку CI не запускает по текущему фильтру push branches=[main]. 5. ВАЖНО: после merge этого PR в main возникнет push в main. После успешного test автоматически запустится обычный production deploy, поскольку для push DIAGNOSTIC_ONLY=false независимо от default input. Выполнятся scp, SSH, установка cron, docker compose up -d --build и проверки версии/health. Default=true защищает только ручной workflow_dispatch; merge не является диагностическим запуском. Это прежнее, явно сохранённое поведение, описанное в README. Проверки: прочитан полный diff всех 6 файлов и полный workflow base/head; git diff --check без ошибок. Серверный статус указанного head: CI / test (pull_request) success, CI / deploy (pull_request) skipped. Новые тесты проверяют shell output/cleanup с заглушкой и наличие guards; реальный runner diagnostic_only ими не проверяется. Workflow вручную не запускался, SSH/scp и VPS не затрагивались, repository/workflow не изменялись. Approval относится к указанному head.
codex changed title from Диагностика fingerprint deployment-ключа без подключения к VPS to Временно отключить production deploy и оставить диагностику fingerprint 2026-10-05 15:35:21 +00:00
codex added 1 commit 2026-10-05 15:35:24 +00:00
fix: temporarily disable production deployment for all events
CI / test (pull_request) Successful in 9m11s
CI / Fingerprint diagnostics (production deployment temporarily disabled) (pull_request) Has been skipped
f39b5dd512
agent approved these changes 2026-10-05 15:39:37 +00:00
agent left a comment
Collaborator

Повторное независимое review полного актуального diff PR #56: head f39b5dd512 относительно main c975e7418b. Прочитаны все 6 изменённых файлов и полный workflow; в дереве head найден только один workflow, .gitea/workflows/ci.yml. Origin совпадает с admin/miem_workers. Reviewer API identity agent (id=7) отличается от автора PR/commit codex (id=6). Блокирующих замечаний не найдено.

  1. Production deployment отключён для всех событий и любых inputs: Upload release и Deploy and verify имеют безусловное if: ${{ false }}. Ни одно значение diagnostic_only не может разрешить scp, SSH или весь удалённый блок deployment/cron/docker compose/health-check/cleanup.
  2. После merge в main событие push запускает test без дополнительного job condition. Диагностический job deploy ограничен workflow_dispatch с diagnostic_only == 'true', поэтому на push и pull_request он пропускается. Этот workflow после merge не подключится к VPS и не изменит его. Это заменяет вывод предыдущего review о deployment после merge для старого head b8a2775.
  3. При ручном diagnostic_only=true после успешных тестов выполняется только локальная подготовка на runner и получение fingerprint. Boolean input объявлен с default=true; строковое значение из Gitea UI корректно сравнивается с 'true', как проверено в предыдущем review. При false диагностический job пропускается, production deploy остаётся отключённым.
  4. В fingerprint step публичный ключ передаётся через pipe из ssh-keygen -y в ssh-keygen -lf - -E sha256; awk выводит только SHA256 fingerprint. set +x находится до записи приватного ключа и в диагностическом шаге. Публичный ключ не сохраняется, upload-artifact отсутствует. Приватный deploy_key и known_hosts создаются в RUNNER_TEMP с mode 600 и удаляются EXIT trap диагностического шага при успехе/ошибке. Release tar создаётся до записи ключей. SSH/scp находятся исключительно в безусловно отключённых шагах.
  5. Временный характер отключения явно указан в README, description input, имени job и комментарии workflow: до установки отдельного deployment-доступа Workers; возврат deploy требует отдельной reviewed правки. Версии приложения/frontend/backend и pyproject согласованы: 0.10.6; API assertion обновлён.

Проверки: git diff --check без ошибок; новые тесты прочитаны, они покрывают условия запуска job, безусловные guards обоих VPS-шагов, сохранение тестов на push/PR, stdout и cleanup с заглушкой keygen. На момент проверки CI этого head pending (test ожидает запуска, diagnostics blocked by required conditions); успех CI не заявляется. Approval относится к коду указанного head и не заменяет required checks. Workflow не запускался и не изменялся, тесты из этой reviewer-сессии не исполнялись, SSH/scp/VPS не затрагивались; push/merge не выполнялись.

Повторное независимое review полного актуального diff PR #56: head f39b5dd512e078ba32f6a0a0336d30aa5faf02c0 относительно main c975e7418be5a280dd49f9766bade8d4700c7bc3. Прочитаны все 6 изменённых файлов и полный workflow; в дереве head найден только один workflow, .gitea/workflows/ci.yml. Origin совпадает с admin/miem_workers. Reviewer API identity agent (id=7) отличается от автора PR/commit codex (id=6). Блокирующих замечаний не найдено. 1. Production deployment отключён для всех событий и любых inputs: Upload release и Deploy and verify имеют безусловное if: ${{ false }}. Ни одно значение diagnostic_only не может разрешить scp, SSH или весь удалённый блок deployment/cron/docker compose/health-check/cleanup. 2. После merge в main событие push запускает test без дополнительного job condition. Диагностический job deploy ограничен workflow_dispatch с diagnostic_only == 'true', поэтому на push и pull_request он пропускается. Этот workflow после merge не подключится к VPS и не изменит его. Это заменяет вывод предыдущего review о deployment после merge для старого head b8a2775. 3. При ручном diagnostic_only=true после успешных тестов выполняется только локальная подготовка на runner и получение fingerprint. Boolean input объявлен с default=true; строковое значение из Gitea UI корректно сравнивается с 'true', как проверено в предыдущем review. При false диагностический job пропускается, production deploy остаётся отключённым. 4. В fingerprint step публичный ключ передаётся через pipe из ssh-keygen -y в ssh-keygen -lf - -E sha256; awk выводит только SHA256 fingerprint. set +x находится до записи приватного ключа и в диагностическом шаге. Публичный ключ не сохраняется, upload-artifact отсутствует. Приватный deploy_key и known_hosts создаются в RUNNER_TEMP с mode 600 и удаляются EXIT trap диагностического шага при успехе/ошибке. Release tar создаётся до записи ключей. SSH/scp находятся исключительно в безусловно отключённых шагах. 5. Временный характер отключения явно указан в README, description input, имени job и комментарии workflow: до установки отдельного deployment-доступа Workers; возврат deploy требует отдельной reviewed правки. Версии приложения/frontend/backend и pyproject согласованы: 0.10.6; API assertion обновлён. Проверки: git diff --check без ошибок; новые тесты прочитаны, они покрывают условия запуска job, безусловные guards обоих VPS-шагов, сохранение тестов на push/PR, stdout и cleanup с заглушкой keygen. На момент проверки CI этого head pending (test ожидает запуска, diagnostics blocked by required conditions); успех CI не заявляется. Approval относится к коду указанного head и не заменяет required checks. Workflow не запускался и не изменялся, тесты из этой reviewer-сессии не исполнялись, SSH/scp/VPS не затрагивались; push/merge не выполнялись.
admin merged commit 66c8e9e0c3 into main 2026-10-06 07:08:05 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/miem_workers#56