powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB 9.0 автосборка из *.sr*, зависимости и т.д.
1 сообщений из 1, страница 1 из 1
PB 9.0 автосборка из *.sr*, зависимости и т.д.
    #40040347
Noga_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Попробую описать мои наработки в плане автосборки проекта из *.sr* файлов.

Какие инструменты нам понадобятся:

# Java JDK 1.8 и выше. У меня была установлена:
Код: powershell
1.
2.
3.
4.
$ java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)


# Apache Ant 1.8 и выше (https://ant.apache.org/bindownload.cgi)
## Качаем архив и распаковываем, например в каталог c:\work\ant
## Добавляем новую переменную среды ANT_HOME = c:\work\ant , и в PATH добавляем c:\work\ant\bin
## Для проверки в консоли пишем:
Код: powershell
1.
2.
$ ant -version
Apache Ant(TM) version 1.9.15 compiled on May 10 2020


# Утилита PB Deploy , которая будет нам помогать генерировать нужные файлы.
Source https://github.com/a-sokolov-pb/pb-deploy
PBL https://github.com/a-sokolov-pb/pb-deploy/blob/master/public/pbl.rar
Binary https://github.com/a-sokolov-pb/pb-deploy/blob/master/public/binary.rar
Sample https://github.com/a-sokolov-pb/pb-deploy/blob/master/public/sample.rar
README https://github.com/a-sokolov-pb/pb-deploy/blob/master/README.md
# Утилита PB Unit Test , для запуска юнит-тестов (см. топик https://www.sql.ru/forum/1332982/pb-unit-testy)
# Любой инструмент для сборки из исходников, который можно выполнять из командной строки (в данном примере, будет использоваться PowerGen )

Идея состоит в следующем!

Запуская ant`овый скрипт сборки, мы могли на выходе получить:
# Автоматически сгенерированный файл ресурсов *.pbr
# Если необходимо, то сгенерированный *.pbw и *.pbt файлы
# Автоматически сгенерированный *.gen файл (описание сборки для PowerGen)
# Собранные PBL из *.sr* и *.pbg файлов
# Запущенные юнит-тесты с выводом лога
# Сборка *.exe и *.pbd
# Копирование всех артефактов в каталог дистрибутива
# Архивация

И для упрощения хранения описания проекта, была разработана утилита PB Deploy .
Задача которой, на основании общего файла описания, генерировать такие файлы как: *.pbr, *.pbt, *.pbw, *.gen, ant'овый файл, который будет закачивать зависимости с репозитория.

Пример файла описания структуры проекта build.package.json :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
{
  "name": "PowerBuilder Sample Application",
  "version": "1.0",
  "description": "PowerBuilder Sample Application",
  "application": {
    "name": "sample",
    "library": "sample.pbl",
    "target": "sample.pbt",
    "ws": "sample.pbw"
  },
  "deploy": {
    "exe": "sample.exe",
    "favicon": "favicon.ico",
    "zip": "sample.zip",
    "pbr": "sample.pbr",
	"resources": ["assets"]
  },
  "libraries": {
     "sample.pbl": ".",
	 "api.pbl": "pbl\\api",
	 "tests.pbl": {
		"dir": "pbl\\tests",
		"scope": "test"
	 },
	 "pb_unit_test_core.pbd": {
		"dir": "pbd",
		"scope": "test"
	 },
	 "json.pbd": "pbd",
	 "common.pbd": "pbd",
	 "io.pbd": "pbd",
	 "pb_addon.pbd": "pbd"
  }
}



Описание таргетов build.xml файла:
# make-environment - Создание файлов окружения по описанию build.package.json файла
# clean - Очистка каталога проекта. Удаление .pbl, .pbd (из корня и каталога ./pbl), .exe и .log файлов
# make-project - Таргет запускающий подряд compile , test , build и package
# compile - Сборка .pbl файлов из сорцов (.sr*), с запуском синхронизации если указан ключ -DsynchIfImportCrashed=true
# test - Запуск юнит-тестов. Не выполняется если указан ключ -DskipTests=true
# build - Сборка .pbd и .exe файлов
# package - Копирование всех артефактов в каталог и архивация
# run - Запуск приложения

Скопировав архив "Sample", в нем найдете каталог without_nexus .
Выполняя ant'овый скрипт с указанием вышеописанных таргетов, получим необходимый нам результат.
Например:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
$ cd without_nexus
# Сборка PBL из исходников и запуск тестов
ant clean compile test
# Полная сборка
ant clean make-project
# Только копирование всех артефактов в каталог target их архивация
ant package


Внимание! Это пример, когда утилита для юнит-тестов и генерации нужных файлов находится в корне приложения в ./utils/unit-test и ./utils/pb_deploy .

Все здорово, но не очень удобно "таскать с собой утилиты" и надо следить за актуализацией самого build.xml .
Плюс, например, у нас есть связанные между собой приложения, который используют некоторый набор PBD как зависимости?

Этот вопрос тоже решаемый.
Для этого в архиве "Sample", вы найдете каталог with_nexus с приложением, на примере которого мы разберем, как можно организовать хранение и скачивание нужных нам зависимостей.

В файле build.package.json у нас добавился блок dependencies :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
"dependencies": {
  "repository": {
    "postfix": "?raw=true",
    "credentials": false
  },
  "dir": "pbd",
  "libraries": {
    "ru.a-sokolov.pb.json@json": {
      "type": "pbd",
      "version": "9.0.1",
      "file": "pbd\\json.pbd"
    }
  },
  "packages": {
    "ru.a-sokolov.pb.additional@pb-additional-zip": {
      "version": "9.0.1",
      "artifacts": {
        "addon": {
          "type": "pbd",
          "file": "pbd\\pb_addon.pbd"
        },
        "common": {
          "type": "pbd",
          "file": "pbd\\common.pbd"
        },
        "io": {
          "type": "pbd",
          "file": "pbd\\io.pbd"
        }
      }
    }
  }
}


Здесь мы описываем какие артефакты нужно скачать с репозитория (будет сгенерирован файл build.download-dependencies.xml ).
Файла build.xml и каталога ./utils нет, т.к. они также будут скачены с репозитория.

Для этого добавлен "пускач" build.starter.xml , задача которого скачать файл-сборщик, который в свою очередь привязан к нужным версиям утилит.
# download-template - загрузка файла-сборщика с репозитория
# run-build - запуск тергетов clean и make-project файла-сборщика
# update-dependencies - обновление зависимостей проекта (см. файл build.package.json )
Выполняя ant'овый скрипт с указанием вышеописанных таргетов, получим необходимый нам результат.
Например:
Код: powershell
1.
2.
3.
4.
5.
$ cd with_nexus
# Полный сборка с обновлением зависимостей
ant -buildfile build.starter.xml download-template update-dependencies run-build
# Обновление зависимостей
ant -buildfile build.starter.xml update-dependencies


Внимание! Чтобы пример работал, вместо "настоящего" репозитория я использую проект на github (см. https://github.com/a-sokolov-pb/pb-repo),
куда я предварительно закачал нужные артефакты.

Для того чтобы переключиться на нужный вам репозиторий, достаточно поменять ссылки:
# build.starter.xml - в таргете download-template
# build.xml - свойство nexus.url

Получилось сложна и непонятно)
Надеюсь, кому-то будет полезно.
P.S. Будут вопросы, то контакты есть в профиле.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB 9.0 автосборка из *.sr*, зависимости и т.д.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]