Cómo obtener de forma fiable y programática el último número de versión de Discourse

Como podría ser para muchos proyectos de código abierto, estaba buscando los lanzamientos de GitHub. Alguien tuvo la misma idea que yo y también descubrió que Discourse no tiene Lanzamientos de GitHub (ya no).

Mi siguiente intento fue usar etiquetas git en GitHub, que sería lo siguiente mejor. A día de hoy, la última etiqueta en GitHub es v3.6.0.beta2. Echando un vistazo a la página de administración de mi propia instancia de Discourse, estoy ejecutando v3.6.0.beta3. Esto significa que no solo el último lanzamiento de Discourse no está etiquetado en GitHub, sino que el propio Discourse (el software) no debe estar utilizando las etiquetas de GitHub como forma de saber cuándo hay un nuevo lanzamiento.

Recordé que mi instalación se ejecuta en Docker, así que decidí seguir ese camino hacia donde se alojan las imágenes de Discourse en Docker Hub. Hay un par de convenciones de nomenclatura que se utilizan como etiquetas allí (como 2.0.20251113-0018-web-only-stable), ninguna que parezca correlacionarse con el formato v.X.Y.Z que Discourse utiliza públicamente.


Entonces, ¿alguien tiene alguna recomendación sobre cómo hacer esto?

La versión que se utiliza para mostrar se define en Discourse::VERSION::String, que es una constante codificada de forma rígida:

1 me gusta

Supongo que estás ejecutando beta3-latest, lo que significa una versión durante el desarrollo de beta3. La versión final de beta3 aún no se ha lanzado.

¿Has leído el tema sobre la nueva estrategia de versionado?

2 Me gusta

No usé nada. Discourse me dice cuándo hay actualizaciones y hago clic en el botón para instalarlas en la interfaz de usuario. Estoy tratando de averiguar de dónde obtiene Discourse esa información.

Gracias. Me encontré con eso, pero requeriría que hiciera git clone con regularidad e inspeccionara ese archivo, lo cual no es ligero.

El primer enlace no me ayuda a obtener la(s) última(s) versión(es) (de hecho, parece que hay aún más que obtener ahora), pero este segundo enlace es bueno saberlo. Parece que el esquema de versionado cambiará por completo. Gracias por el enlace.

Pensé que la explicación de que las notificaciones se envían una vez que se lanza una nueva beta podría ser útil para usted. Cuando actualice después de la notificación para la versión 3.6.0.beta3, mientras su foro se basa en “latest”, obtendrá 3.6.0.beta4-latest.

Necesito algún tipo de URL donde pueda usar un lenguaje de programación (o decir curl) para verificar cuál es la última versión. Típicamente, esto es algún tipo de feed y tiene una respuesta con un lenguaje estructurado como JSON, XML, YAML, etc.

Puedes usar la verificación de versión que está en el código de Discourse.

https://api.discourse.org/api/version_check?installed_version=

donde X es una versión conocida en la rama sobre la que deseas obtener información.

Si solo deseas obtener los últimos 5 números de versión beta, simplemente usa una versión antigua como
https://api.discourse.org/api/version_check?installed_version=3.1.0.beta1

Si deseas la última versión estable, omite el parámetro installed_version
https://api.discourse.org/api/version_check

4 Me gusta

Esto. Esto es exactamente lo que estaba buscando y mi Google-fu me estaba fallando. ¡Gracias!

Esta API muestra v3.6.0 beta 2 como la última (como las etiquetas de GitHub) y no la beta 3, que es lo que está ejecutando mi foro. No entiendo cómo sucedió eso, pero ese es un problema diferente. :laughing:

Gracias por la ayuda.

2 Me gusta

Los datos proporcionados por api.discourse.org se toman de las etiquetas de GitHub, por lo que puedes usar cualquiera de las dos. Siempre darán el mismo resultado.

Eso es porque estás ejecutando la versión pre-lanzamiento de beta3:

El sufijo -latest es el indicador de que es una pre-versión y no corresponde a un commit específico de Discourse.

2 Me gusta