Saltar al contenido principal

Publicar y Actualizar

Objetivos de aprendizaje

¡Si sigue aquí con nosotros, esta es el último paso en el tutorial! En este apartado, publicará su app en lanzamientos de GitHub e integrará actualizaciones automáticas en el código de su aplicación.

Usando update.electronjs.org

Aquellos que mantienen Electron proporcionan un servicio de actualización automática gratuito para aplicaciones de código abierto en https://update.electronjs.org. Los requerimientos son los siguientes:

  • Tu App se ejecuta en macOS o Windows
  • La aplicación tiene un repositorio público en GitHub
  • Todas las compilaciones se publicarán en lanzamientos de GitHub
  • Las compilaciones se firman (solo macOS)

Llegados a este punto, supondremos que ya ha subido todo su código a un repositorio público de GitHub.

Servicios de actualización alternativos

Si usa un servicio de hosteo alternativo (e.g. GitLab o Bitbucket) o si necesita mantener el código de su repositorio privado, por favor refiérase a nuestra guía paso a paso sobre cómo hostear su propio servidor de actualización Electron.

Publicando una versión de GitHub

Electron Forge tiene plugins Publicadores que pueden automatizar la distribución de su aplicación empaquetada a varias fuentes. En este tutorial, vamos a usar el Publicador Github (Github Publisher), el cual nos va a permitir publicar nuestro código en lanzamientos de GitHub.

Generar un token de acceso personal

Forge no puede publicar en ningún repositorio de GitHub sin permiso. Necesita que le facilite una token autentificada que le dé a Forge acceso a sus lanzamientos de GitHub. La manera más sencilla de hacerlo es crear un nuevo token de acceso personal (PAT) con el alcanze de public_repo, lo cual proporciona acceso a escribir en sus repositorios públicos. Asegúrese de que esta token sea secreta

Configura el Publicador de Github (GitHub Publisher)

Instalando el módulo

El Publicador de GitHub de Forge es un plugin que necesita ser instalado en las devDependencies de su proyecto:

npm install --save-dev @electron-forge/publisher-github

Configurar el publicador en Forge

Una vez lo haya instalado, necesita configurarlo en su configuración de Forge. Una lista entera de opciones puede ser encontrada en la PublisherGitHubConfig de la documentación de la API de Forge.

forge.config.js
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'github-user-name',
name: 'github-repo-name'
},
prerelease: false,
draft: true
}
}
]
}
Lanzamientos borrador antes de publicar

Vea que se ha configurado Forge para publicar sus lanzamientos como un borrador. Esto le permitirá ver los lanzamientos con sus artefactos generados sin realmente publicarlo para usuarios. Puede publicar manualmente sus lanzamientos a través de GitHub tras escribir notas de lanzamiento y revisar que los distribuibles funcionan correctamente.

Configurar su token de autentificación

También necesita que el Publicador esté al corriente de su token de autentificación. Por defecto, usará el valor almacenado en la variable de entorno GITHUB_TOKEN.

Correr el comando de publicación

Añada el comando de publicación de Forge a sus scripts de npm.

package.json
  //...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish"
},
//...

Este comando va a ejecutar los creadores configurados y va a publicar los distribuibles de salida a un nuevo lanzamiento de GitHub.

npm run publish

Por defecto, esto solamente publicará un único distribuible para su sistema operativo de uso principal y su arquitectura. Puede publicar para diferentes arquitecturas usando la bandera --arch en sus comandos de Forge.

El nombre de este lanzamiento va a corresponder con el campo de version en el archivo package.json de su proyecto.

Etiquetar lanzamientos

Ocasionalmente, también puede etiquetar sus lanzamientos en Git de manera que dicho lanzamiento se asocie con un punto etiquetado en la historia de su código. npm viene con un práctico comando npm version que puede manejar el cambio de versión y el etiquetado en su lugar.

Bonus: Publicar en Github Actions

Publicar localmente puede ser difícil, especialmente porque solo puedes crear distribuibles para su sistema operativo anfitrión (p. ej. no se puede publicar un archivo .exe de Windows desde macOS).

Una solución para esto sería publicar su aplicación a través de flujos de trabajo de automatización como GitHub Actions, el cual puede ejecutar tareas en la nube en Ubuntu, macOS y Windows. Este es el enfoque exacto adoptado por Electron Fiddle. Puede referirse al pipeline de Construcción y Lanzamiento de Forge y a configuración de Forge para más detalles.

Instrumentar su código actualizador

Ahora que tenemos un sistema de lanzamiento funcional a través de lanzamientos de GitHub, necesitamos comunicarle a nuestra aplicación Electron que debe descargar una actualización cada vez que se efectúa un lanzamiento. Las aplicaciones Electron logran esto a través del módulo autoUpdater, el cual lee de un feed de un servidor de actualización con el objetivo de comprobar si una nueva versión está disponible para su descarga.

El servicio update.electronjs.org proporciona un feed compatible con actualizadores. Por ejemplo, Electron Fiddle v0.28.0 comprobará el endpoint en https://update.electronjs.org/electron/fiddle/darwin/v0.28.0 para ver si una versión más reciente del lanzamiento de GitHub está disponible.

Después de que el lanzamiento sea publicado en GitHub, el servicio update.electronjs.org debería funcionar para su aplicación. El único paso que queda es configurar el feed con el módulo autoUpdater.

Para hacer este proceso más sencillo, el equipo de Electron mantiene el módulo update-electron-app, el cual ya configura el código modelo de autoUpdate para update.electronjs.org en una llamada a la función — no es necesaria ninguna configuración. Este módulo buscará el feed de update.electronjs.org que coincida con el campo de "repository" del package.json de su proyecto.

Primero, instale el módulo como una dependencia runtime.

npm install update-electron-app

Después, importe el módulo y llámelo inmediatamente en el proceso principal.

main.js
require('update-electron-app')()

¡Y eso es todo! Una vez su aplicación esté empaquetada, se va a actualizar por cada nuevo lanzamiento en GitHub que se publique.

Resumen

En este tutorial, hemos configurado el Publicador de GitHub de Electron Forge para subir los distribuibles de su aplicación a lanzamientos de GitHub. Ya que los distribuibles no siempre pueden ser generados entre plataformas, recomendamos configurar su flow de construcción y publicación en una pipeline de Integración Continua si no tiene acceso a máquinas.

Las aplicaciones Electron pueden actualizarse solas apuntando el módulo autoUpdater hacia un feed de servidor de actualización. update.electronjs.org es un servidor de actualización gratuito proporcionado por Electron para aplicaciones de código abierto publicadas en lanzamientos de GitHub. Configurar su aplicación Electron para disfrutar de este servicio es tan fácil como instalar e importar el módulo update-electron-app.

Si su aplicación no es elegible para update.electronjs.org, en su lugar debería crear su propio servidor de actualizaciones y configurar el módulo autoUpdater manualmente.

🌟 ¡Ya está!

En este punto, ya ha completado oficialmente nuestro tutorial para Electron. Es libre de explorar el resto de nuestra documentación y ¡feliz desarrollo! Si tiene cualquier pregunta, por favor no dude en pasarse por nuestro servidor de Discord comunitario.