שחרור של מערכת הבנייה של Bazel 2.0

זמין שחרור של כלי הרכבה פתוחים Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта מופץ על ידי מורשה תחת Apache 2.0.

Значительное изменение версии связано с добавлением изменений, нарушающих обратную совместимость. Начиная с Bazel 2.0 включены по умолчанию режимы «—incompatible_remap_main_repo» (ссылки по имени и через @ теперь ссылаются на один репозиторий), «—incompatible_disallow_dict_lookup»_(применение нехешируемых ключей),
«—incompatible_remove_native_maven_jar» и «—incompatible_prohibit_aapt1». Среди других изменений:

  • בקבוצה aquery появилась экспериментальная поддержка новой редауции формата вывода «proto» (—output=proto), которая пока отключена по умолчанию (—incompatible_proto_output_v2) и обеспечивает более компактное представление данных;
  • Добавлен флаг «—incompatible_remove_enabled_toolchain_types», позволяющий удалить поле PlatformConfiguration.enabled_toolchain_types;
  • Добавлена защита от загрузки пакетов, при загрузке которых при раскрытии путей используются цикличные символические ссылки;
  • Реализована возможность использования флага «—disk_cache» с внешними кэшами gRPC;
  • В пакет для Debian и бинарный инсталлятор включена улучшенная прослойка, обрабатывающая файлы ~/.bazelversion и переменную окружения $USE_BAZEL_VERSION;
  • В рамках подготовки к переводу файлов с манифестом runfiles в категорию устаревших возможностей добавлен флаг «—experimental_skip_runfiles_manifests».

בין המאפיינים הייחודיים של Bazel הם המהירות הגבוהה, האמינות והחזרה של תהליך ההרכבה. כדי להשיג מהירות בנייה גבוהה, Bazel משתמש באופן פעיל בטכניקות מטמון והקבילה לתהליך הבנייה. קבצי BUILD חייבים להגדיר באופן מלא את כל התלות, שעל בסיסן מתקבלות החלטות לבנות מחדש רכיבים לאחר ביצוע שינויים (רק קבצים שהשתנו נבנים מחדש) ולהקביל את תהליך ההרכבה. כלי עבודה גם מבטיח הרכבה חוזרת, כלומר. התוצאה של בניית פרויקט על המחשב של המפתח תהיה זהה לחלוטין לבנייה על מערכות צד שלישי, כגון שרתי אינטגרציה מתמשכת.

בניגוד ל-Make ו-Ninja, Bazel משתמש בגישה ברמה גבוהה יותר לבניית כללי assembly, שבה, במקום להגדיר את הקישור של הפקודות לקבצים הנבנים, נעשה שימוש בלוקים מוכנים מופשטים יותר, כגון "בניית קובץ הפעלה ב- C++", "בניית ספרייה ב-C++" או "הפעלת בדיקה עבור C++", כמו גם זיהוי פלטפורמות יעד ובניית פלטפורמות. בקובץ הטקסט BUILD, רכיבי הפרויקט מתוארים כחבורה של ספריות, קבצי הפעלה ובדיקות, ללא פירוט ברמה של קבצים בודדים ופקודות קריאת מהדר. פונקציונליות נוספת מיושמת באמצעות מנגנון חיבור הרחבות.

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

מקור: OpenNet.ru

הוספת תגובה