|
@@ -0,0 +1,118 @@
|
|
|
+---
|
|
|
+title: Установка локального сервера сборки
|
|
|
+brief: Руководство описывает как установить и запустить локальный сервер сборки
|
|
|
+---
|
|
|
+
|
|
|
+# Установка локального сервера сборки
|
|
|
+Существует два способа запуска локального сервера сборки (Extender):
|
|
|
+1. Запуск локального сервера сборки с готовыми артефактами.
|
|
|
+2. Сборка всех необходимых артефактов локально и использование этих артефактов для запуска локального сервера сборки.
|
|
|
+
|
|
|
+## Как запустить локальный сервер сборки с готовыми артефактами
|
|
|
+
|
|
|
+### Предустановки
|
|
|
+* **Docker** - https://www.docker.com/products/docker-desktop/
|
|
|
+* **gcloud cli** - https://cloud.google.com/sdk/docs/install
|
|
|
+* **google account**
|
|
|
+
|
|
|
+### Как использовать готовые образы Docker
|
|
|
+**Примечание для пользователей Windows**: используйте git bash для выполнения команд описанных ниже.
|
|
|
+1. Авторизуемся в Google Cloud и создаем учетные данные приложения по умолчанию (Application default credentials/ADC)
|
|
|
+ ```sh
|
|
|
+ gcloud auth application-default login
|
|
|
+ ```
|
|
|
+2. Конфигурируем Docker для использования реестра Артефактов
|
|
|
+ ```sh
|
|
|
+ gcloud auth configure-docker europe-west1-docker.pkg.dev
|
|
|
+ ```
|
|
|
+3. Проверить, что Docker запущен.
|
|
|
+4. Проверяем, что все сконфигурировано корректно путем скачивания базового образа. Запустите
|
|
|
+ ```sh
|
|
|
+ docker pull --platform linux/amd64 europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-base-env:latest
|
|
|
+ ```
|
|
|
+5. Клонируем репозиторий `Extender` и переходим в корневую директорию склонированного репозитория
|
|
|
+ ```sh
|
|
|
+ git clone https://github.com/defold/extender.git
|
|
|
+ cd extender/
|
|
|
+ ```
|
|
|
+6. Скачиваем готовые jar файлы:
|
|
|
+ ```sh
|
|
|
+ TMP_DIR=$(pwd)/server/_tmp
|
|
|
+ APPLICATION_DIR=$(pwd)/server/app
|
|
|
+ # set nesessary version of Extender and Manifest merge tool
|
|
|
+ # versions can be found at Github release page https://github.com/defold/extender/releases
|
|
|
+ # or you can pull latest version (see code sample below)
|
|
|
+ EXTENDER_VERSION=2.6.5
|
|
|
+ MANIFESTMERGETOOL_VERSION=1.3.0
|
|
|
+ echo "Download prebuild jars to ${APPLICATION_DIR}"
|
|
|
+ rm -rf ${TMP_DIR}
|
|
|
+ mkdir -p ${TMP_DIR}
|
|
|
+ rm -rf ${APPLICATION_DIR}
|
|
|
+ mkdir -p ${APPLICATION_DIR}
|
|
|
+
|
|
|
+ gcloud artifacts files download \
|
|
|
+ --project=extender-426409 \
|
|
|
+ --location=europe-west1 \
|
|
|
+ --repository=extender-maven \
|
|
|
+ --destination=${TMP_DIR} \
|
|
|
+ com/defold/extender/server/${EXTENDER_VERSION}/server-${EXTENDER_VERSION}.jar
|
|
|
+
|
|
|
+ gcloud artifacts files download \
|
|
|
+ --project=extender-426409 \
|
|
|
+ --location=europe-west1 \
|
|
|
+ --repository=extender-maven \
|
|
|
+ --destination=${TMP_DIR} \
|
|
|
+ com/defold/extender/manifestmergetool/${MANIFESTMERGETOOL_VERSION}/manifestmergetool-${MANIFESTMERGETOOL_VERSION}.jar
|
|
|
+
|
|
|
+ cp ${TMP_DIR}/$(ls ${TMP_DIR} | grep server-${EXTENDER_VERSION}.jar) ${APPLICATION_DIR}/extender.jar
|
|
|
+ cp ${TMP_DIR}/$(ls ${TMP_DIR} | grep manifestmergetool-${MANIFESTMERGETOOL_VERSION}.jar) ${APPLICATION_DIR}/manifestmergetool.jar
|
|
|
+ ```
|
|
|
+7. Запускаем docker compose
|
|
|
+главная команда
|
|
|
+```sh
|
|
|
+docker compose -p extender -f server/docker/docker-compose.yml --profile <profile> up
|
|
|
+```
|
|
|
+где *profile* может быть:
|
|
|
+* **all** - запускает все сервисы, которые нужны для сборки на всех поддерживаемых платформах
|
|
|
+* **android** - запускает frontend сервис + сервис для сборки Android версии
|
|
|
+* **web** - запускает frontend сервис + сервис для сборки Web версии
|
|
|
+* **linux** - запускает frontend сервис + сервис для сборки Linux версии
|
|
|
+* **windows** - запускает frontend сервис + сервис для сборки Windows версии
|
|
|
+* **consoles** - запускает frontend сервис + сервисы для сборки Nintendo Switch/PS4/PS5 версий
|
|
|
+* **nintendo** - запускает frontend сервис + сервис для сборки Nintendo Switch версии
|
|
|
+* **playstation** - запускает frontend сервис + сервисы для сборки PS4/PS5 версий
|
|
|
+* **metrics** - запускает VictoriaMetrics + Grafana в качестве сервиса для сбора метрик и их визуализации
|
|
|
+Для дополнительной информации о том, какие аргументы могут быть переданы команде `docker compose` смотрите https://docs.docker.com/reference/cli/docker/compose/.
|
|
|
+
|
|
|
+Когда docker compose запустить, то можно использовать адрес **http://localhost:9000** как адрес сервера сборки в настройках Редактора или как значение для аргумента `--build-server`, если Вы используете Bob для сборки проекта.
|
|
|
+
|
|
|
+Несколько профилей может быть одновременно передано в командную строку. Например:
|
|
|
+```sh
|
|
|
+docker compose -p extender -f server/docker/docker-compose.yml --profile android --profile web --profile windows up
|
|
|
+```
|
|
|
+Пример выше запустит frontend сервис, а также сервисы для сборки Android, Web, Windows.
|
|
|
+
|
|
|
+Для остановки всех сервисов - нажмите Ctrl+C если docker compose запущен в режиме без отсоединения, или
|
|
|
+```sh
|
|
|
+docker compose -p extender down
|
|
|
+```
|
|
|
+если docker compose был запущен в режиме отсоединения (т.е. флаг '-d' был передан при выполнении команды `docker compose up`).
|
|
|
+
|
|
|
+Если вы хотите скачать последние версии jar файлов, то вы можете использовать следующие команды для определения последних доступных для скачивания версий
|
|
|
+```sh
|
|
|
+ EXTENDER_VERSION=$(gcloud artifacts versions list \
|
|
|
+ --location=europe-west1 \
|
|
|
+ --repository=extender-maven \
|
|
|
+ --package="com.defold.extender:server" \
|
|
|
+ --sort-by="~createTime" \
|
|
|
+ --limit=1 \
|
|
|
+ --format="get(name)" | awk -F'/' '{print $NF}')
|
|
|
+
|
|
|
+ MANIFESTMERGETOOL_VERSION=$(gcloud artifacts versions list \
|
|
|
+ --location=europe-west1 \
|
|
|
+ --repository=extender-maven \
|
|
|
+ --package="com.defold.extender:manifestmergetool" \
|
|
|
+ --sort-by="~createTime" \
|
|
|
+ --limit=1 \
|
|
|
+ --format="get(name)" | awk -F'/' '{print $NF}')
|
|
|
+```
|