Start Debugging
2026-01-08 flutter Edit on GitHub

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, и эта ревизия контролирует:

Обновление 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 меняется без изменений кода, я проверяю в таком порядке:

Причина, по которой мне нравится выделять 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.

< Назад