Привет, Егор! Переход на Raspberry Pi 4 — это отличный шаг. Дополнительная оперативная память и более мощный процессор дадут нам хороший запас для локальной аналитики и комфортной работы PWA.

Архитектурно процесс миграции делится на две части: обновление нашего CI/CD пайплайна (эту задачу мы отдадим AI-агенту) и ручной перенос состояния (это нужно будет сделать тебе в терминале).

Архитектурный план миграции

  1. Сборка Docker-образа (Multi-arch): В данный момент файл deploy-raspberry-pi3.yaml жестко завязан на 32-битную архитектуру (linux/arm/v7). Raspberry Pi 4 (по умолчанию) использует 64-битную ОС. Нам нужно изменить пайплайн так, чтобы он собирал образы сразу под две платформы: linux/arm/v7,linux/arm64.
  2. GitHub Actions Runner: У нас в пайплайне указан runs-on: self-hosted. Тебе потребуется установить агента GitHub Actions на новую «малину» и присвоить ему метку, например, rpi4. Пайплайн мы обновим так, чтобы он искал именно этот тег.
  3. Безопасный перенос SQLite (Критично!): Поскольку мы используем WAL (Write-Ahead Logging) для SQLite, нельзя просто скопировать файл .db на горячую.
    • Сначала делаем docker compose down на RPi 3.
    • Убеждаемся, что файлы dicechess.db-wal и dicechess.db-shm слились с основным файлом (или копируем их вместе с основным файлом базы).
    • Переносим папку приложения с помощью rsync на RPi 4: rsync -avz ~/apps/dicechess-trainer pi@<rpi4-ip>:~/apps/

Ниже представлен скрипт для постановки задачи нашему агенту. Агент обновит инфраструктурный код и напишет документацию по миграции, чтобы в будущем мы могли легко масштабироваться.

Команда для создания задачи (PowerShell)

$issueBody = @'
## Context
We are migrating our deployment environment from a Raspberry Pi 3 (ARMv7) to a Raspberry Pi 4 (ARM64). Our current CD pipeline (`deploy-raspberry-pi3.yaml`) strictly targets `linux/arm/v7` and relies on a generic `self-hosted` runner. We need to upgrade our deployment pipeline to be architecture-agnostic (multi-arch) and properly target the new hardware.
 
## Objective
Update the GitHub Actions CD pipeline to build a multi-architecture Docker image (`linux/arm/v7` and `linux/arm64`), rename the workflow to reflect a generic production deployment, and write a documentation guide on how to migrate the local SQLite database safely between devices.
 
## Definition of Done (DoD)
- [ ] Rename `.github/workflows/deploy-raspberry-pi3.yaml` to `.github/workflows/deploy-production.yaml`.
- [ ] Update the `docker/build-push-action` step to compile for `platforms: linux/arm/v7,linux/arm64`.
- [ ] Update the deployment job's `runs-on` array to explicitly require the `rpi4` tag alongside `self-hosted` (e.g., `runs-on: [self-hosted, rpi4]`).
- [ ] Create a new documentation file `docs/src/content/docs/guides/infrastructure-migration.mdx`.
- [ ] In the new `.mdx` file, document the safe migration of a SQLite DB with WAL mode (requiring container shutdown and copying of `-wal`/`-shm` files alongside the `.db` file).
- [ ] Update Astro config / Starlight sidebar in the docs to include the new guide.
'@
 
$issueBody | Out-File -FilePath "temp_issue.md" -Encoding utf8
 
gh issue create `
  --title "Migrate CD Pipeline and Document Architecture for RPi 4 (ARM64)" `
  --body-file "temp_issue.md" `
  --label "ai-ready" `
  --label "ci-cd" `
  --label "architecture" `
  --milestone "v0.1 - Foundation"
 
Remove-Item "temp_issue.md"

Мои рекомендации перед запуском пайплайна: Как только агент закроет этот Issue, установи GitHub Actions Runner на Raspberry Pi 4. При настройке runner’а обязательно укажи тег rpi4. После этого сделай rsync папки с базой данных и .env файлом, и новый деплой автоматически запустит приложение уже на четвертой малине.