Skip to content

MOBILE-0000: Релиз-преп должен двигать mindbox-common вместе с mobile-sdk - #222

Merged
Vailence merged 1 commit into
mission/storiesfrom
feature/MOBILE-0000-FixCI
Sep 9, 2026
Merged

Vailence merged 1 commit into
mission/storiesfrom
feature/MOBILE-0000-FixCI

Conversation

@Vailence

@Vailence Vailence commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Причина

В android/build.gradle обёртка берёт mindbox-common как compileOnly (появилось в #220): нативный SDK держит его implementation-зависимостью, поэтому @InternalMindboxApi — аннотация, которой помечены хуки встроенных блоков — не попадает на compile-classpath потребителя. В Gradle-метаданных mobile-sdk это видно прямо: mindbox-common перечислен только в releaseVariantReleaseRuntimePublication, в api-варианте его нет.

Но релизная автоматика бампает версию натива только в api-строке. То есть на следующем релизе mobile-sdk уехал бы на новую версию, а mindbox-common остался бы на 2.15.4.

Ломается это молча и неприятно: compileOnly не участвует в резолве рантайм-графа, конфликта версий Gradle не увидит, и обёртка скомпилируется против старого common, а поедет с новым (его притащит транзитивно mobile-sdk). Если в common переедет или сменит сигнатуру что-то из используемого — получим либо unresolved reference на релизной ветке, либо NoSuchMethodError уже у клиента. Заметно станет только в момент релиза.

Что сделано

Обе точки, которые готовят релизную ветку, теперь двигают обе строки:

  • .github/workflows/manual-prepare_release_branch.yml — шаг «Create branch & apply bumps»
  • git-release-branch.sh — локальный аналог

Версия намеренно остаётся литералом в обеих строках, а не выносится в переменную: на формат этих строк завязаны оба sed'а и extractVersion.sh в репозитории приложения (он читает версию для versionName / CFBundleShortVersionString). Любой будущий рефакторинг в переменную обязан править все три места.

Как проверено локально

  • Шаг bump вытащен из воркфлоу дословно и выполнен в одноразовом клоне ветки с VERSION=2.16.0 и пустыми android_sdk_version / ios_sdk_version (проверился и фолбэк на RN-версию). Результат: mobile-sdk и mindbox-common оба на 2.16.0, podspec, package.json, CHANGELOG — как раньше, ветка release/2.16.0, release_branch в GITHUB_OUTPUT.
  • git-release-branch.sh прогнан во втором клоне — обе строки переезжают.
  • Оговорка: на macOS нет GNU sed, поэтому при прогоне sed -i подменялся на BSD-форму. Проверены регулярки и порядок шагов; сама GNU-конструкция sed -i "expr" в этом шаге была и до изменения и уже прошла через релизы.

Тикета на это нет — отсюда MOBILE-0000 в имени ветки.

🤖 Generated with Claude Code

…prep

The wrapper takes mindbox-common compileOnly because mobile-sdk keeps it an
implementation dependency, so the release tooling has to move both lines at once —
otherwise the compile classpath keeps the old common while the runtime one comes
transitively from the new mobile-sdk.
@Vailence
Vailence merged commit 7829bf0 into mission/stories Sep 9, 2026
5 checks passed
@Vailence
Vailence deleted the feature/MOBILE-0000-FixCI branch September 9, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants