Непрерывная интеграция
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
) должен выглядеть следующим образом:
Project.wlp
— это ваш файл проекта.
$WLE_CREDENTIALS
— это секрет, содержащий email:password
. Мы настроим его на следующем шаге.
Обратите внимание, что Bitbucket в настоящее время не предлагает услугу для хостинга статических страниц, как Gitlab Pages или GitHub Pages. Вместо этого вы можете комбинировать это с deploy to netlify.
Развёртывание на Netlify
Здесь мы используем Netlify CLI для “непрерывного развёртывания”.
Конфигурация
Настройте .gitlab-ci.yml
, как описано в секции Gitlab CI.
Добавьте stage deploy:
Затем добавьте следующую задачу deploy в конец файла:
Переменные
Найдите переменные для 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 вам нужно добавить токен в окружение:
Загрузка сборок
При загрузке сборок из CI убедитесь, что проект упакован в
папку deploy/
и добавьте следующую команду в ваш CI-скрипт:
“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 }}
.