Flutter 3.38.6 и поднятие `engine.version`: воспроизводимые сборки становятся проще (если вы их закрепите)
Flutter 3.38.6 поднял engine.version, и это важно для воспроизводимых сборок. Узнайте, как закрепить SDK в CI, избежать дрейфа engine и диагностировать 'что изменилось', когда сборки ломаются без изменений кода.
Flutter 3.38.6 выпустился с записью релиза “engine.version bump”, и эта маленькая фраза значит больше, чем кажется. Если ваши CI-сборки когда-либо дрейфовали из-за того, что одна машина выбрала немного другой артефакт engine, закрепление становится разницей между “работает” и “мы можем воспроизвести эту сборку на следующей неделе”.
Запись релиза: https://github.com/flutter/flutter/releases/tag/3.38.6
engine.version это скрытое закрепление за SDK
Когда вы запускаете flutter --version, вы выбираете не просто версию фреймворка. Вы неявно выбираете конкретную ревизию engine, и эта ревизия контролирует:
- Поведение Skia и рендеринга
- Изменения platform embedder
- Поведение инструментария, зависящего от артефактов engine
Обновление engine.version это сообщение Flutter: “этот тег SDK сопоставлен с этой ревизией engine”. Иначе говоря, это сигнал воспроизводимости, а не просто рутинная задача процесса релиза.
Закрепите Flutter 3.38.6 в CI скучным способом
Скучный способ это лучший способ: используйте менеджер версий и закоммитьте нужную версию.
Если вы используете FVM, закрепите Flutter явно и заставьте CI падать при дрейфе:
# One-time on your machine
fvm install 3.38.6
fvm use 3.38.6 --force
# In CI (example: verify the version)
fvm flutter --version
Если вы не используете FVM, важная идея та же: не позволяйте “что-то установленное на раннере” решать ваш engine. Установите Flutter 3.38.6 как часть пайплайна, кешируйте его и печатайте flutter --version в логи, чтобы можно было диагностировать дрейф.
Чек-лист “почему моя сборка изменилась”
Когда сборка Flutter меняется без изменений кода, я проверяю в таком порядке:
- Тег SDK Flutter: мы всё ещё на 3.38.6?
- Ревизия engine: показывает ли
flutter --version -vтот же коммит engine? - Версия Dart: дрейф SDK может изменить поведение анализатора и среды выполнения.
- Окружение сборки: версии Xcode/Android Gradle Plugin могут создавать различия.
Причина, по которой мне нравится выделять engine.version, в том, что это делает второй пункт действенным. Как только вы относитесь к Flutter SDK как к неизменному входу, остальная часть пайплайна становится проще для понимания.
Если вы поддерживаете несколько приложений, сделайте закрепление видимым. Сниппет в README или CI-проверка, верифицирующая Flutter 3.38.6, дёшевы и сэкономят часы в первый раз, когда кто-то спросит: “что изменилось?”.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.