Библиотека сайта rus-linux.net
Технология подготовки релизов веб-браузера Firefox
Глава 2 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: Firefox Release Engineering
Авторы: Chris AtLee, Lukas Blakk, John O'Duinn, Armen Zambrano Gasparian
Перевод: А. Панин
2.4. Повторно упакованные сборки с локализацией и партнерские повторно упакованные сборки
Как только сборки для настольных компьютеров генерируются и загружаются на сервер ftp.mozilla.org
, наша автоматизированная система подготовки релизов переходит к выполнению работ по созданию повторно упакованных сборок с локализациями. "Повторно упакованная сборка с локализацией" формируется на основе оригинальной сборки (которая содержит локализацию en-US) путем ее распаковки, замены строк локализации en-US на строки другой локализации, которую мы будем распространять в рамках данного релиза, с последующей повторной упаковкой всех извлеченных файлов (именно поэтому мы и называем эти сборки повторно упакованными). Мы повторяем эту процедуру для каждой локализации, поставляемой в рамках релиза. Изначально мы осуществляли все повторные упаковки файлов последовательно. Однако, по мере того, как мы добавляли дополнительные локализации, этот процесс все больше затягивался и нам приходилось начинать его выполнение с начала в случае возникновения ошибки на промежуточном этапе.
Рисунок 2.4: Повторная упаковка файлов Firefox для каждой из локализаций
В настоящее время мы разделили весь процесс повторной упаковки на шесть отдельных процессов, которые выполняются одновременно на шести отдельных машинах. Этот подход позволил сократить время работы практически в шесть раз. Также он позволил отменять повторную упаковку только ограниченного количества сборок в случае возникновения ошибки при упаковке без необходимости отмены всех упаковок. (Мы можем разделить задачи по выполнению повторных упаковок сборок даже на еще большее количество меньших одновременно обрабатываемых групп, но мы считаем, что такой подход подразумевает задействование слишком большого количества доступных машин, которые выполняют другие не связанные с повторной упаковкой сборок задачи, инициируемые разработчиками для обслуживания нашей системы непрерывной интеграции.)
Процесс для мобильной версии (предназначенной для работы под управлением Android) значительно отличается от описанного выше, так как мы выпускаем только два установщика: установщик англоязычной версии и установщик многоязычной версии со встроенной в установщик поддержкой множества множества языков вместо предоставления сборки для каждой локализации. Размер этой многоязычной версии имеет значение, особенно в случае использования медленных соединений и мобильных устройств с ограниченными ресурсами. Наш план на будущее заключается в предоставлении поддержки других языков посредством ресурса addons.mozilla.org
по запросу.
На Рисунке 2.4 вы можете увидеть, что на данный момент мы используем три различных источника информации о доступных локализациях: файлы shipped_locales
, l10_changesets
и l10-changesets_mobile-release.json
. (Планируется перемещение данных из всех трех источников в один файл в унифицированном формате JSON.) Эти файлы содержат информацию о различных локализациях, находящихся в нашем распоряжении, а также о исключениях для определенных платформ. В частности, при использовании заданной локализации нам необходимо обладать информацией о том, какая ревизия данных из репозитория должна быть использована для подготовки заданного релиза, а также нам необходимо обладать информацией о том, может ли локализация использоваться на всех поддерживаемых нами платформах (например, все данные японских локализаций для платформы Mac извлекаются из отдельного репозитория). Два из трех описанных выше файлов используются при подготовке релизов для настольных компьютеров и один файл - при подготовке релизов для мобильных устройств (в этом файле формата JSON содержится как список платформ, так и описание наборов изменений данных репозиториев).
Кто же принимает решение о том, какие языки мы включаем в комплект поставки релизов? Во-первых, создатели локализаций самостоятельно предлагают свои определенные наборы изменений локализаций для включения в состав заданного релиза. Предложенный набор изменений проверяется участниками команды локализации организации Mozilla и размещается на веб-ресурсе со списком наборов изменений, необходимых для поддержки каждого из языков. Координатор релиза проверяет размещенную на этом ресурсе информацию перед передачей сообщения электронной почты с командой "отправка на сборку". В день выпуска релиза мы извлекаем этот список наборов изменений и производим повторную упаковку сборок в соответствии с ним.
Наряду с повторными упаковками сборок с локализациями мы также генерируем партнерские повторно упакованные сборки. Это специально измененные сборки для различных партнеров, которые желают внести изменения в пользовательские качества программного продукта для удовлетворения запросов своих клиентов. Наиболее часто вносимыми типами изменений являются измененные списки закладок, нестандартные домашние страницы и нестандартные поисковые машины, но многие другие вещи также могут быть изменены. Эти измененные сборки генерируются для конечных релизов Firefox и не генерируются для бета-версий.
Продолжение статьи: Добавление цифровых подписей