Непрерывная интеграция
Wonderland Editor Docker Image позволяет настроить эффективную непрерывную интеграцию и доставку проектов Wonderland Engine.
Эта страница описывает, как настроить эффективную автоматическую сборку и развёртывание с использованием самых популярных CI-сервисов:
Кроме того, здесь описано, как настроить автоматизацию для загрузки сборок на:
Gitlab CI / Gitlab Pages
Используйте любой docker runner (например, общие runner на gitlab.com) на Gitlab.
Конфигурация
Ваш файл .gitlab-ci.yml должен выглядеть следующим образом:
stages:
- build
- deploy
package:
image: wonderlandengine/editor:latest
stage: build
script:
# Настройка переменной WLE_CREDENTIALS для входа в WonderlandEditor
- WonderlandEditor --windowless --package --project Project.wlp
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- cache/
artifacts:
paths:
- deploy
pages:
image: alpine:3.14
stage: deploy
rules:
# Развёртывание на pages только для основной ветки
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
before_script:
- apk add gzip
script:
- gzip -k deploy/*.*
- mv deploy public
artifacts:
paths:
- 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) должен выглядеть следующим образом:
on: [push]
permissions:
contents: read
pages: write
id-token: write
jobs:
package:
runs-on: ubuntu-latest
container:
image: wonderlandengine/editor:latest
steps:
- name: Install Git
run: apt-get update && apt-get install -y git git-lfs
- uses: actions/checkout@v4
with:
lfs: true
- name: Package
run: /usr/local/bin/entrypoint.sh WonderlandEditor --windowless --package --project Project.wlp --output ./public/
env:
WLE_CREDENTIALS: ${{ secrets.WLE_CREDENTIALS }}
- name: Gzip
run: find ./public/ -type f ! -name '*.gz' -exec gzip -k "{}" \;
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
deploy-pages:
needs: package
runs-on: ubuntu-latest
if: ${{ format('refs/heads/{0}', github.event.repository.default_branch) == github.ref }}
steps:
- name: Deploy to GitHub Pages
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) должен выглядеть следующим образом:
image: wonderlandengine/editor:latest
pipelines:
default:
- step:
name: 'Build'
script:
- /usr/local/bin/entrypoint.sh WonderlandEditor --windowless --package --project Project.wlp
artifacts:
- 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:
stages:
- build
- deploy Затем добавьте следующую задачу deploy в конец файла:
netlify:
image: node:15
stage: deploy
script:
- npm install -g netlify-cli
- 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 вам нужно добавить токен в окружение:
env:
HEYVR_ACCESS_TOKEN: ${{ secrets.HEYVR_ACCESS_TOKEN }} Загрузка сборок
При загрузке сборок из CI убедитесь, что проект упакован в папку deploy/ и добавьте следующую команду в ваш CI-скрипт:
- npm i -g heyvr-cli
- 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-ключ, запустив:
butler login Команда выведет путь к файлу, в который был записан API-ключ. Скопируйте содержимое и добавьте переменную CI или секрет с названием BUTLER_API_KEY.
Дополнительную информацию смотрите на странице документации Itch.io.
Установка Butler
Для того чтобы команда butler была доступна в вашем CI-задании, вы можете использовать docker-образ с предустановленным butler:
image: dosowisko/butler Здесь мы используем dosowisko/butler, но существуют и другие варианты.
Загрузка сборок
При загрузке сборок из CI убедитесь, что проект упакован в папку deploy/ и добавьте следующую команду в ваш CI-скрипт:
- butler push ./deploy user/game:channel-name Смотрите страницу документации Itch.io.
Явная версия
Также можно добавить явный номер версии при развёртывании из тегов. Для Gitlab CI используйте --userversion $CI_COMMIT_TAG, а для GitHub Actions используйте --userversion ${{ github.ref_name }}.