Блог Александра Божко
Архивы
Рубрики
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

В сегодняшнем посте речь пойдёт о продукте FinalBuilder. Он поставляется вместе с Embarcadero RAD Studio и я, наконец-то, нашел время немного разобраться с ним.

Для чего это нужно?

График моей работы предполагает еженедельный выпуск билда программного продукта. Что имеется ввиду? Один раз в неделю я делаю примерно следующую последовательность действий:

  • собираю проект в Release конфигурации;
  • обновляю и компилирую языковые файлы;
  • разношу собранные файлы в нужные директории;
  • криптую проект ASProtect‘ом;
  • обновляю скрипты сетапа;
  • собираю сетап;
  • загружаю файлы в хранилище;
  • рассылаю уведомления.

Кроме этого создание и сохранение бекапов и много других рутинных операций. Конечно, каждый проект имеет собственную специфику. Где-то используются различные системы контроля версий, что-то распространяется с исходными кодами в архиве. Но практически везде существует изрядный список однотипных операций, повторяющихся при выпуске каждого билда.

Рано или поздно возникает желание автоматизировать все эти процессы. Вот для такой автоматизации и предназначен FinalBuilder, т.н. Embarcadero редакция которого имеется в составе RAD Studio.

Да, существует очень много различных “автоматизаторов действий” и планировщиков задач разного уровня сложности. В том числе, есть достаточно мощные бесплатные решения. Но, FinalBuilder - продукт прежде всего, для разработчиков. Его функционал действительно впечатляет и большинство функций так или иначе связаны с процессом разработки программного обеспечения.

Как это работает?

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

Итак, предположим, что мы хотим автоматизировать следующую последовательность действий:

  • скомпилировать приложение;
  • защитить исполняемый файл спомощью ASProtect;
  • скопировать файлы для создания инсталлятора.

Предлагаю пока ограничиться этим не большим списком действий. Решать более сложные задачи я пока не готов, да и для понимания принципов работы продукта, думаю, достаточно подобной небольшой задачи.

После первого запуска FinalBuilder мы попадаем на welcome страницу, где нам предлагается познакомится с многочисленными примерами. Примеры, действительно, весьма полезные, но мы начнем с создания нового проекта.

final_builder_new_proj

В документации FinalBuilder используется терминология, схожая с терминологией, используемой  в  описании Delphi. Что упрощает мою задачу.

На рисунке видно, как выглядит  IDE FinalBuilder в режиме проектирования (Design Mode). Прежде всего, давайте обратим внимание на панель Projects. В древовидном списке присутствуют три основные ветви: Project Information, Action Lists и Variables.

Ветка  Project Information не представляет особого практического интереса для нас. Там, как и следует из названия хранится информация о проекте. Описание проекта задается вручную, статистика собирается автоматически.

FinalBuilder кроме всего прочего умеет обрабатывать переменные. Ветка Variables. Кроме пользовательских переменных продукт работает с переменными окружения, что позволяет ему взаимодействовать с операционной системой.

Ветка Action Lists содержит списки действий, которые мы и будем определять в нашем проекте. По умолчанию для проекта создаётся два списка – Main и OnFailure. Не трудно догадаться, что выполнение проекта будет начинаться с выполнения списка Main. Если же “что-то пошло не так”, то будет выполнен список OnFailure. Такая логика нас вполне устраивает. Давайте попробуем добавить действие в список. Для этого перейдем на закладку Actions. Здесь список всех допустимых действий разбит на категории. Впечатляет даже само количество категорий. Полный список не помещается на моем 24″ экране.

FinalBuilder. Actions

FinalBuilder. Actions

Первое действие, необходимое для решения нашей задачи – компиляция приложения. В категории Compilers выберем действие Build Delphi. В диалоговом окне с многостраничным интерфейсом проведем настройку проекта.

FinalBuilder. Компиляция Delphi проекта.

FinalBuilder. Компиляция Delphi проекта.

Большинство закладок воспроизводят опции проекта в IDE Delphi. Что бы не особо вдаваться в настройки компиляции проекта (все же это совершенно отдельная тема), мы можем просто указать файл проекта и  воспользоваться опцией Load Settings From Projects File, таким образом, загрузив все настройки из проекта Delphi.

Обратите внимание на то, что FinalBuilder знает, что такое EurecaLog.

Кроме опций, связанных непосредственно с Delphi проектом существуют две страницы, содержащие общие настройки (General и Runtime). Это стандартные страницы и они присутствуют в настройках любых действий.

Страница Runtime FinalBuilder

Страница Runtime FinalBuilder

Как видно из рисунка, у нас есть возможность дополнительно обработать выполнение того или иного действия (в частности, включить лог или сделать паузу перед или после выполнения действия).

Завершив настройку действия, закрываем диалог и пробуем выполнить скрипт (как и в Delphi – F9).

FinalBuilder_Runtime_Mode

IDE переключается в режим запуска (Running mode).

Если выполнение прошло успешно, то статус действия будет выглядеть примерно так:

FinalBuilder. Действие выполнено успешно.

FinalBuilder. Действие выполнено успешно.

В противном случае, необходимо разбираться с причинами неудачи. Здесь следует отметить, что FinalBuilder оснащен средствами отладки. В сложных скриптах мы можем установить Break Point и выполнять скрипт пошагово. Кроме того, здесь имеется возможность обработки исключений.

FinalBuilder. Есть возможность обработки исключений

FinalBuilder. Есть возможность обработки исключений

Я не буду здесь детально останавливаться на отладке скриптов. Возможно, это станет темой отдельного разговора. Вместо этого, перейдем к второму действию. В полной версии FinalBuilder есть специальные предустановленые действия для работы с ASProtect. Нам же прийдется довольствоваться работой с командной строкой.

Выберем действие Execute Program из категории Windows OS. В настройках данного действия указывается исполняемый файл и параметры.

FinalBuilder. Execute Program.

FinalBuilder. Execute Program.

Результатом выполнения данного действия является запуск процедуры протекции полученного на предыдущем шаге исполняемого файла. Предполагается, что проект ASProtect (ATRClient.aspr2) уже создан.

Третье действие – копирование файлов, создается по аналогии. На этот раз используется предустановленной действие Copy File(s) из категории Files&Directories.

Теперь запуск скрипта приведет к последовательному выполнению всех трёх действий.

В данном примере мы рассмотрели простейший вариант. Однако FinalBuilder предполагает написание и значительно более сложных скриптов, например, с использованием различных условий.

Среди предустановленных действий в полной редакции есть множество действий, предназначенных для работы с различными системами контроля версий (в том числе и Subversion), виртуальными машинами, HTTP и FTP протоколами, протекторами, инсталляторами и многое другое. Так же имеется возможность написания пользовательских действий. Таким образом, практически любая задача может быть автоматизирована.

Общее впечатление

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

Приятно порадовала корректная поддержка кириллицы.

Embarcadero Edition

Несколько слов об Embarcadero редакции. Естественно, она довольно серьезно урезана. При том “выкушены” довольно полезные функции (всего около 600), если судить по таблице возможностей и документации. Но есть и хорошая новость. Владельцам Embarcadero Edition предоставляется скидка. Точный размер ее я не знаю, это уточняется по письменному запросу.

Заключение

Субъективно, данная среда мне очень понравилась (удивляюсь себе, почему же ни я, ни другие блоггеры ранее не обращали на нее внимания). В идеале, она дает возможность выпуска едва ли не ежедневных “ночных билдов”, превращая выпуск очередного релиза в банальное нажатие одной кнопки. Но… Это в идеале. На практике, как и любая достаточно сложная система, FinalBuilder требует определнных навыков.

В процессе подгтовки данного материала я узнал, что мне предстоит принять в работу несколько проектов с довольно сложным деплойментом. Таким образом, сразу обозначилась веская причина попробовать написать реальные скрипты и более глубоко разобраться с продуктом. Ведь это будет лучшая шпаргалка.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

5 комментариев: FinalBuilder

  • Хороший обзор, но как всегда хочется узнать немного больше. Интересует возможность создания пользовательских действий. Можно в двух словах, чтобы получить общее представление. Я сам использую внешние скрипты, все устраивает, кроме того, что скрипты пишутся не часто и постоянно приходится освежать в памяти синтаксис других языков. Если в Embarcadero Edition есть возможность создавать действия на pascal, то это может стать стимулом перейти на FinalBuilder.

    ps: “Очевидно, что FinalBuilder представляет собой полноценную среду разработки скриптов планирования задач, с весьма обширным функционалом.” – имхо здесь правильнее говорить о системе непрерывной интеграции (Continues Integration).

    • Насколько я понял, для создания пользовательских действий есть Action Studio. Это отдельное приложение. Поставляется вместе с FinalBuilder Professional Edition. Иными словами, в Embarcadero Edition речь о пользовательских действиях не идет вообще.

    • Поддерживаемые языки для скриптования.
      PowerShell, Python, VBScript and JavaScript
      pascal нет.

  • Очень существенный недостаток Embarcadero Edition – она не принимает параметров командной строки (кроме имени открываемого проекта), а значит ее нельзя использовать в батниках и даже ярлык по которому проект автоматически собирается создать нельзя. Строго открыть среду FinalBuilder и запустить проект вручную.
    —-
    Тем кто пользуется пиратским. Можно несколько расширить возможности Embarcadero Edition путем смешивания ее с триальной версией, через подмену некоторых bpl. Полный список bpl определяется экспериментально.

  • Где-то с месяц назад восхитился декларируемыми возможностями FB и стал делать проекты для компиляции основных рабочих проектов на нем. После углубления в проект энтузиазм ослаб.
    Плюсы FB
    + автоматический импорт настроек проектов delphi. Не надо вручную писать длиннющую командную строку запуска компилятора.
    + наличие переменных и возможностей работы с ними. Переменные можно подставлять почти в любое место в настройках (кроме чекбоксов и подобных нетекстовых полей)
    + Условия, try..except.
    + разбор логов исполнения команд регэкспами
    Минусы FB
    – Нет возможности запускать выполнение проекта из командной строки (В Embarcadero Edition)
    – Нет списка возможностей, выпиленных в Embarcadero Edition. Справка относится к полной версии.
    – интеграция со StarTeam весьма средняя. Командная строка предоставляет существенно больше возможностей.
    – некоторые сложности с компиляцией ресурсов для проектов Delphi. В частности кавычки в VersionInfo нужно заменять на пары кавычек.
    – в официальной Embarcadero Edition нет интеграции с предыдущими версиями Delphi.
    – Пиратка весьма неновой версии.

    Итоговый вывод – знаете более приглядный скриптовой язык чем батники – используйте его, не морочьте себе голову FinalBuilder, а особенно FinalBuilder Embarcadero Edition.

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика