Хранение исходного кода, объектного кода и средства сборки
Назначение документа
Настоящий раздел содержит описание технических средств хранения исходного текста и объектного кода программного обеспечения PRADIS, а также технических средств компиляции исходного текста в объектный код.
Хранение исходного кода
Исходный код PRADIS хранится во внутренней системе управления версиями GitLab на собственных серверах организации, расположенных на территории Российской Федерации. Доступ к репозиториям предоставляется уполномоченным сотрудникам и регулируется средствами разграничения прав GitLab.
В состав исходных кодов и сборочной инфраструктуры входят следующие основные репозитории:
Репозиторий |
Назначение |
|---|---|
|
Сценарии CI, сборка установочных пакетов, подготовка дистрибутивов и публикация артефактов. |
|
Исходный код графической среды PRADIS/Qucs на C++ с использованием Qt. |
|
Исходный код постпроцессора на C++ с использованием Qt и Open CASCADE. |
|
Базовые модули и артефакты PRADIS. Штатная CI-процедура формирует архив
артефактов; legacy-компиляция может включаться отдельно переменной
|
Хранение объектного кода и дистрибутивов
Объектный код, исполняемые файлы, библиотеки и установочные пакеты формируются в процессе CI-сборки. Результаты сборки сохраняются как артефакты GitLab CI и, для релизных или кандидатных сборок, публикуются во внутреннее Nexus-хранилище организации.
К объектному коду и сборочным артефактам относятся:
исполняемые файлы и динамические библиотеки компонентов PRADIS;
промежуточные и итоговые артефакты CI-сборки;
установочные пакеты для Linux-дистрибутивов, включая
.rpmи.deb;архивы компонентных payload-артефактов, используемые при формировании установочного пакета.
Доступ к объектному коду, пакетам и архивам регулируется правами доступа в GitLab CI и Nexus.
Средства компиляции
Программное обеспечение PRADIS содержит компилируемые компоненты, написанные преимущественно на C и C++. Для подготовки сборки, вспомогательных операций и упаковки также используются сценарии Bash, PowerShell и Python.
Компиляция исходного кода в объектный код для Linux-сборок выполняется на серверах GitLab Runner, расположенных на территории Российской Федерации. Сборка выполняется в контролируемом CI-окружении с использованием Docker образов целевых Linux-дистрибутивов.
В качестве технических средств компиляции и сборки применяются следующие программные продукты:
Средство |
Назначение |
|---|---|
|
Компиляторы GNU для компиляции исходного кода C и C++ в объектный код. |
|
Кроссплатформенная система конфигурирования и автоматизации сборки проектов. |
|
Высокопроизводительный исполнитель сборочных задач, используемый совместно с CMake. |
|
Исполнитель сборочных сценариев и правил сборки для отдельных компонентов. |
Qt5 development packages |
Библиотеки и средства разработки Qt5, используемые при сборке графических компонентов PRADIS. |
|
Средства формирования установочных пакетов |
Использование Qt
В Linux-сборке применяются библиотеки и средства разработки Qt5. В составе
исходного кода присутствует модуль qt3_compat, реализующий совместимость с
устаревшими Qt3-подобными API. Данный модуль является частью исходного кода
PRADIS и собирается вместе с проектом; отдельный Qt3 toolchain для Linux-сборки
не используется.
CI-сборка и публикация артефактов
CI-процессы выполняются во внутреннем GitLab. Основные стадии включают сборку, проверку установки и публикацию артефактов. Для Linux-сборок используются задания, формирующие пакеты для Astra Linux, РЕД ОС и ALT Linux.
Сборочные задания получают исходные коды из внутренних Git-репозиториев, компилируют компоненты, устанавливают их во временный корень пакета, формируют установочный пакет и сохраняют результат как GitLab CI artifacts. При наличии настроенных учетных данных результат дополнительно публикуется во внутреннее Nexus-хранилище.
Хранение лицензионных ключей и секретов
Лицензионные ключи, токены доступа и пароли не хранятся в исходном коде и не публикуются в документации. Для CI-сборок используются защищенные переменные GitLab CI/CD и иные средства хранения секретов с ограниченным доступом.
В документации указывается только порядок хранения и использования лицензионных данных без раскрытия значений ключей, токенов и паролей.