Integración Continua

La Wonderland Editor Docker Image permite establecer una configuración eficiente de integración y entrega continua de proyectos de Wonderland Engine.

Esta página describe cómo configurar construcciones automáticas eficientes y despliegue con los servicios de CI más populares:

Además, esta página describe cómo establecer automatización para cargar construcciones a:

Gitlab CI / Gitlab Pages 

Usando cualquier docker runner (por ejemplo, los runners compartidos de gitlab.com) en Gitlab.

Configuración 

Tu archivo .gitlab-ci.yml debería verse como sigue:

 1stages:
 2  - build
 3  - deploy
 4
 5package:
 6  image: wonderlandengine/editor:latest
 7  stage: build
 8  script:
 9    # Configurar la variable WLE_CREDENTIALS para que WonderlandEditor inicie sesión
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    # Solo desplegar en pages en la rama main/master
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 es una variable que contiene un token de acceso. Lo configuraremos en el próximo paso.

Variables 

Encuentra variables para Gitlab CI en la interfaz web de Gitlab: Configuración > CI/CD > Variables.

Haz clic en “Agregar variable” y nómbrala WLE_CREDENTIALS. Su valor debe ser un API-Token, el cual puedes obtener en la página de cuenta, bajo “API-Token”. Llena el nombre y la fecha de expiración, luego haz clic en “Crear nuevo API-Token”. El token puede ser copiado de la entrada recién creada en la parte superior de la lista.

Para proyectos públicos asegúrate de habilitar “Proteger variable” para evitar que las solicitudes de fusión no unidas puedan acceder a la variable de CI.

Caché 

La tarea que consume más tiempo en el editor es la compresión de texturas. Esto es significativamente más rápido si los resultados se guardan en caché (en el directorio cache/). Por lo tanto, es útil especificar esta carpeta para la caché de CI o registrar los archivos en el control de fuentes.

GitHub Workflows / GitHub Pages 

Usando cualquier runner habilitado para docker (por ejemplo, los runners alojados de GitHub) en GitHub.

Configuración 

Tu archivo de flujo de trabajo (por ejemplo .github/workflows/github-pages.yml) debería verse como sigue:

 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 es tu archivo de proyecto.

$WLE_CREDENTIALS es un secreto que contiene email:password. Lo configuraremos en el próximo paso.

El trabajo deploy-pages solo se ejecutará en la rama predeterminada de tu repositorio (generalmente main).

Secretos 

Encuentra secretos para GitHub Workflows en la interfaz web de GitHub: Configuración > Secretos > Acciones.

Haz clic en “Nuevo secreto de repositorio” en la parte superior derecha y nómbralo WLE_CREDENTIALS. Su valor debe ser un API-Token, el cual puedes obtener en la página de cuenta, bajo “API-Token”. Llena el nombre y la fecha de expiración, luego haz clic en “Crear nuevo API-Token”. El token puede ser copiado de la entrada recién creada en la parte superior de la lista.

Los secretos no se pasan a pull requests desde forks, lo que significa que tu flujo de trabajo puede no ejecutarse para pull requests de colaboradores externos.

Bitbucket CI 

Usando cualquier runner habilitado para docker (por ejemplo, los runners alojados de GitHub) en GitHub.

Configuración 

Tu archivo de pipelines (por ejemplo, bitbucket-pipelines.yml) debería verse como sigue:

 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 es tu archivo de proyecto.

$WLE_CREDENTIALS es un secreto que contiene email:password. Lo configuraremos en el próximo paso.

Ten en cuenta que Bitbucket actualmente no ofrece un servicio para alojar páginas estáticas como Gitlab Pages o GitHub Pages. En su lugar, puedes combinar esto con deploy to netlify.

Desplegar en Netlify 

Aquí usamos Netlify CLI para el “despliegue continuo”.

Configuración 

Configura .gitlab-ci.yml como se describe en Gitlab CI.

Agrega despliegue a las etapas:

1stages:
2  - build
3  - deploy

Luego añade el siguiente trabajo de despliegue al final del archivo:

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

Variables 

Encuentra variables para Gitlab CI en la interfaz web de Gitlab: Configuración > CI/CD > Variables.

Añade una variable con una clave como NETLIFY_AUTH_TOKEN y establece su valor al token de acceso de netlify. Puedes crearlo aquí.

De manera similar, añade otra variable con una clave como NETLIFY_SITE_ID. Establece su valor al “ID del Sitio” del sitio que deseas desplegar. Esto se encuentra en configuración del sitio > General > Detalles del sitio > Información del sitio. (En caso de que no hayas creado un sitio, sigue la guía aquí).

Publicar en HeyVR 

Para publicar desde CI a HeyVR puedes usar el paquete no oficial “heyvr-cli” en npm.

El paso final de publicación debe hacerse en el portal de desarrolladores de HeyVR.

Autenticación 

Obtén una clave API en tus Configuraciones de Cuenta de HeyVR bajo “Token de Acceso para Desarrolladores”.

Añade una variable de CI o secreto HEYVR_ACCESS_TOKEN con el token como valor.

Para GitHub Workflows necesitas agregar el token al entorno:

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

Enviar Construcciones 

Cuando envíes construcciones desde CI, asegúrate de que el proyecto esté empaquetado en la carpeta deploy/ y añade el siguiente comando a tu script de CI:

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

El “heyvr-game-id” es el slug del juego que creaste en heyvr.

Para GitHub Actions, reemplaza $CI_COMMIT_TAG con ${{ github.ref_name }}.

Publicar en Itch.io 

Itch.io proporciona una herramienta CLI llamada “butler” para subir construcciones a tus páginas de juego.

Autenticación 

Para automatizar la publicación para Gitlab CI o GitHub Workflows, necesitarás obtener una clave API ejecutando:

1butler login

El comando imprimirá la ruta al archivo donde escribió la clave API. Copia el contenido y añade una variable de CI o secreto llamado BUTLER_API_KEY.

Consulta la página de documentación de Itch.io para más información.

Instalación de Butler 

Para tener el comando butler disponible en tu trabajo de CI, puedes usar una imagen docker que venga con butler preinstalado:

1    image: dosowisko/butler

Aquí usamos dosowisko/butler, pero hay muchas alternativas.

Enviar Construcciones 

Cuando envíes construcciones desde CI, asegúrate de que el proyecto esté empaquetado en la carpeta deploy/ y añade el siguiente comando a tu script de CI:

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

Consulta la página de documentación de Itch.io.

Versión Explícita 

También puedes agregar un número de versión explícito al desplegar desde etiquetas. Para Gitlab CI, usa --userversion $CI_COMMIT_TAG y para GitHub Actions usa --userversion ${{ github.ref_name }}.