Управляйте своими настройками cookies. Вы можете включать или отключать различные виды cookies ниже. Для получения более подробной информации см. нашу Политику конфиденциальности.

Непрерывная интеграция

Wonderland Editor Docker Image позволяет настроить эффективную непрерывную интеграцию и доставку проектов Wonderland Engine.

Эта страница описывает, как настроить эффективную автоматическую сборку и развёртывание с использованием самых популярных CI-сервисов:

Кроме того, здесь описано, как настроить автоматизацию для загрузки сборок на:

Gitlab CI / Gitlab Pages 

Используйте любой docker runner (например, общие runner на gitlab.com) на Gitlab.

Конфигурация 

Ваш файл .gitlab-ci.yml должен выглядеть следующим образом:

 1stages:
 2  - build
 3  - deploy
 4
 5package:
 6  image: wonderlandengine/editor:latest
 7  stage: build
 8  script:
 9    # Настройка переменной WLE_CREDENTIALS для входа в WonderlandEditor
10    - WonderlandEditor --windowless --package --project Project.wlp
11  cache:
12    key: ${CI_COMMIT_REF_SLUG}
13    paths:
14      - cache/
15  artifacts:
16    paths:
17      - deploy
18
19pages:
20  image: alpine:3.14
21  stage: deploy
22  rules:
23    # Развёртывание на pages только для основной ветки
24    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
25  before_script:
26    - apk add gzip
27  script:
28    - gzip -k deploy/*.*
29    - mv deploy public
30  artifacts:
31    paths:
32      - public

$WLE_CREDENTIALS — это переменная, содержащая токен доступа. Мы настроим её на следующем шаге.

Переменные 

Найдите переменные для Gitlab CI в веб-интерфейсе Gitlab: Settings > CI/CD > Variables.

Нажмите “Add Variable” и назовите её WLE_CREDENTIALS. Её значение должно быть API-токеном, который вы можете получить на странице аккаунта, в разделе “API-Token”. Введите имя и дату окончания, затем нажмите “Create New API-Token”. Токен можно скопировать из только что созданной записи в верхней части списка.

Для публичных проектов убедитесь, что включена опция “Protect variable” для предотвращения доступа к переменной CI из неслитых merge request.

Кэш 

Самая времязатратная задача в редакторе — это сжатие текстур. Этот процесс значительно быстрее, если результаты кэшируются (в папке cache/). Поэтому полезно либо указать эту папку для кэша CI, либо добавить файлы в систему управления версиями.

GitHub Workflows / GitHub Pages 

Используйте любой runner с поддержкой Docker (например, размещённые runner на GitHub) на GitHub.

Конфигурация 

Ваш файл workflow (например, .github/workflows/github-pages.yml) должен выглядеть следующим образом:

 1on: [push]
 2
 3permissions:
 4  contents: read
 5  pages: write
 6  id-token: write
 7
 8jobs:
 9  package:
10    runs-on: ubuntu-latest
11    container:
12      image: wonderlandengine/editor:latest
13    steps:
14    - name: Install Git
15      run: apt-get update && apt-get install -y git git-lfs
16    - uses: actions/checkout@v4
17      with:
18        lfs: true
19    - name: Package
20      run: /usr/local/bin/entrypoint.sh WonderlandEditor --windowless --package --project Project.wlp --output ./public/
21      env:
22          WLE_CREDENTIALS: ${{ secrets.WLE_CREDENTIALS }}
23    - name: Gzip
24      run: find ./public/ -type f ! -name '*.gz' -exec gzip -k "{}" \;
25    - name: Upload artifact
26        uses: actions/upload-pages-artifact@v3
27        with:
28          path: ./public
29
30  deploy-pages:
31    needs: package
32    runs-on: ubuntu-latest
33    if: ${{ format('refs/heads/{0}', github.event.repository.default_branch) == github.ref }}
34    steps:
35      - name: Deploy to GitHub Pages
36        uses: actions/deploy-pages@v4

Project.wlp — это ваш файл проекта.

$WLE_CREDENTIALS — это секрет, содержащий email:password. Мы настроим его на следующем шаге.

Задача deploy-pages будет выполняться только на основной ветке вашего репозитория (обычно main).

Секреты 

Найдите секреты для GitHub Workflows в веб-интерфейсе GitHub: Settings > Secrets > Actions.

Нажмите “New repository secret” в правом верхнем углу и назовите его WLE_CREDENTIALS. Его значение должно быть API-токеном, который вы можете получить на странице аккаунта, в разделе “API-Token”. Введите имя и дату окончания, затем нажмите “Create New API-Token”. Токен можно скопировать из только что созданной записи в верхней части списка.

Секреты не передаются в pull-реквестах из форков, что означает, что ваш workflow может не запускаться для pull-реквестов от внешних сотрудников.

Bitbucket CI 

Используйте любой runner с поддержкой Docker (например, размещённые runner на GitHub) на GitHub.

Конфигурация 

Ваш файл pipelines (например, bitbucket-pipelines.yml) должен выглядеть следующим образом:

 1image: wonderlandengine/editor:latest
 2
 3pipelines:
 4  default:
 5    - step:
 6        name: 'Build'
 7        script:
 8          - /usr/local/bin/entrypoint.sh WonderlandEditor --windowless --package --project Project.wlp
 9        artifacts:
10          - deploy/**

Project.wlp — это ваш файл проекта.

$WLE_CREDENTIALS — это секрет, содержащий email:password. Мы настроим его на следующем шаге.

Обратите внимание, что Bitbucket в настоящее время не предлагает услугу для хостинга статических страниц, как Gitlab Pages или GitHub Pages. Вместо этого вы можете комбинировать это с deploy to netlify.

Развёртывание на Netlify 

Здесь мы используем Netlify CLI для “непрерывного развёртывания”.

Конфигурация 

Настройте .gitlab-ci.yml, как описано в секции Gitlab CI.

Добавьте stage deploy:

1stages:
2  - build
3  - deploy

Затем добавьте следующую задачу deploy в конец файла:

1netlify:
2  image: node:15
3  stage: deploy
4  script:
5    - npm install -g netlify-cli
6    - netlify deploy --dir=public --prod

Переменные 

Найдите переменные для Gitlab CI в веб-интерфейсе Gitlab: Settings > CI/CD > Variables.

Добавьте переменную с ключом NETLIFY_AUTH_TOKEN и значением в виде токена доступа netlify. Вы можете создать его здесь.

Также добавьте другую переменную с ключом NETLIFY_SITE_ID. Установите её значение в “Site ID” сайта, который вы хотите развернуть. Это можно найти в site settings > General > Site details > Site information. (Если вы ещё не создали сайт, следуйте инструкции здесь).

Публикация на HeyVR 

Чтобы публиковать из CI в HeyVR, вы можете использовать неофициальный пакет “heyvr-cli” на npm.

Последний этап публикации должен быть завершён в портале разработчика HeyVR.

Аутентификация 

Получите API-ключ в ваших настройках аккаунта HeyVR в разделе “Developer Access Token”.

Добавьте CI-переменную или секрет HEYVR_ACCESS_TOKEN с токеном в качестве значения.

Для GitHub Workflows вам нужно добавить токен в окружение:

1  env:
2    HEYVR_ACCESS_TOKEN: ${{ secrets.HEYVR_ACCESS_TOKEN }}

Загрузка сборок 

При загрузке сборок из CI убедитесь, что проект упакован в папку deploy/ и добавьте следующую команду в ваш CI-скрипт:

1  - npm i -g heyvr-cli
2  - heyvr --version $CI_COMMIT_TAG --gameId "heyvr-game-id"

“heyvr-game-id” — это slug игры, которую вы создали на heyvr.

Для GitHub Actions замените $CI_COMMIT_TAG на ${{ github.ref_name }}.

Публикация на Itch.io 

Itch.io предоставляет CLI-инструмент под названием “butler” для загрузки сборок на страницы ваших игр.

Аутентификация 

Для автоматизации публикации для Gitlab CI или GitHub Workflows вам понадобится получить API-ключ, запустив:

1butler login

Команда выведет путь к файлу, в который был записан API-ключ. Скопируйте содержимое и добавьте переменную CI или секрет с названием BUTLER_API_KEY.

Дополнительную информацию смотрите на странице документации Itch.io.

Установка Butler 

Для того чтобы команда butler была доступна в вашем CI-задании, вы можете использовать docker-образ с предустановленным butler:

1    image: dosowisko/butler

Здесь мы используем dosowisko/butler, но существуют и другие варианты.

Загрузка сборок 

При загрузке сборок из CI убедитесь, что проект упакован в папку deploy/ и добавьте следующую команду в ваш CI-скрипт:

1  - butler push ./deploy user/game:channel-name

Смотрите страницу документации Itch.io.

Явная версия 

Также можно добавить явный номер версии при развёртывании из тегов. Для Gitlab CI используйте --userversion $CI_COMMIT_TAG, а для GitHub Actions используйте --userversion ${{ github.ref_name }}.