Publicar una versión
Experto
Convierte una compilación probada en una versión. Esta página es para mantenedores.
Antes de empezar
Enlace a Antes de empezar- Todas las comprobaciones de Pruebas pasan, incluidas una ejecución completa de extremo a extremo y las ejecuciones largas y de fallos.
CHANGELOG.mdtiene la versión nueva.- Python 3 está instalado para los scripts de publicación.
Prepara una versión
Enlace a Prepara una versión-
Escribe
releases/notes-<version>.toml, por ejemploreleases/notes-1.0.0.toml. Consulta Archivo de notas de la versión. -
Compruébalo:
Terminal window python deploy/release/notes.py 1.0.0 --checkNo deberías ver errores. Una palabra prohibida, una raya, una fecha, frases de lanzamiento o un issue destacado repetido hacen que termine con 1.
-
Genera los textos de la versión:
Terminal window python deploy/release/notes.py 1.0.0Deberías encontrar 7 archivos en
releases/out/1.0.0/. -
Compila la imagen e iníciala con una carpeta de configuración nueva:
Terminal window docker build --file deploy/Dockerfile .Deberías ver el asistente de primer inicio.
-
Ejecuta todas las comprobaciones de Pruebas en tu equipo. Las pruebas se ejecutan en local, no en GitHub.
-
Entrega la versión al mantenedor. El mantenedor sube la etiqueta de la versión en main, y eso inicia la publicación.
Opciones
Enlace a OpcionesNombres de versión y de etiqueta
Enlace a Nombres de versión y de etiqueta| Elemento | Nombre |
|---|---|
| Etiqueta de Git (la sube el mantenedor) | 1.0.0 (solo números, sin v) |
Etiqueta de la imagen y version de las notas |
1.0.0 |
El workflow se inicia solo con una etiqueta X.Y.Z y se detiene cuando la etiqueta no coincide con el archivo VERSION.
Etiquetas de la imagen
Enlace a Etiquetas de la imagenCada versión sube su etiqueta de versión y :latest.
Retira una versión
Enlace a Retira una versión- Sube la siguiente versión con la corrección.
- Marca la versión defectuosa en la lista de actualizaciones para que las instalaciones no la ofrezcan.
- Conserva la etiqueta.
Si no funciona
Enlace a Si no funcionaSíntoma. notes.py --check termina con 1.
Causa. El archivo de notas incumple una regla. El mensaje indica la línea.
Solución. Edita el archivo de notas, nunca los archivos de releases/out, y ejecútalo otra vez.
Síntoma. El workflow se detiene con VERSION says.
Causa. La etiqueta y el archivo VERSION no coinciden.
Solución. Corrige VERSION en main y sube la etiqueta de la siguiente versión.
Para expertos
Enlace a Para expertosArchivo de notas de la versión
Todos los textos de una versión salen de un solo archivo. Nunca edites a mano lo que genera.
| Campo | Contenido |
|---|---|
version |
X.Y.Z sin más |
theme |
Una línea |
images |
Lista de {registry, name}. Solo holyarrs/holyarrs de Docker Hub |
docs_url |
Opcional. Vacío significa sin enlace a la documentación |
[[highlights]] |
Exactamente 3, cada uno con line, issues y shot. Sus issues no aparecen en ninguna línea de grupo |
[groups] |
Líneas por lugar. Nuevo es lo predeterminado. Las demás empiezan por Changed: , Fixed: o Docs: . Cada una termina con su issue, como (#46). Un lugar con menos de 3 líneas va bajo Also new |
| Opcional | [before_you_update] (breaking, manual_steps, backup, rollback), security, known_issues, credits, [stats]. Las partes vacías se ocultan |
Usa un nombre de usuario de GitHub solo cuando se conoce, en el archivo de notas o en releases/credits-map.json.
Orden del cuerpo: tema, Highlights, lugares (Requests, Library, Downloads, Indexers, Accounts, Health, Setup, Install), Also new, Security, Known issues, Before you update, Image, Thanks, línea de estadísticas.
Salida en releases/out/<version>/ |
Se usa para |
|---|---|
changelog.md |
La entrada del registro de cambios |
github.md |
El cuerpo de la versión en GitHub |
update-notes.json |
Las notas que muestra la app |
reddit.txt |
La publicación de Reddit |
discord-dm.txt, discord-announce.md |
Discord. Cada uno se queda por debajo de 1000 caracteres |
roadmap-card.json |
La tarjeta de la hoja de ruta |
notes.py acepta --file (otro archivo de notas), --map (otro mapa de créditos), --out (otra carpeta de salida) y --date. --check advierte de líneas largas y de casi repeticiones.
El workflow de la imagen
El workflow HolyArrs - Release se inicia cuando se sube una etiqueta de versión. Tiene tres pasos:
- Compilar y subir la imagen para
linux/amd64,linux/arm64ylinux/arm/v7, con la etiqueta de versión ylatest. - Actualizar la descripción de Docker Hub a partir de
README.md. - Publicar la versión en GitHub con la sección de
CHANGELOG.mdde esta versión.
Lista de actualizaciones
La app lee una lista de actualizaciones firmada. Cada versión añade su entrada y la firma. La clave de firma nunca entra en el repositorio. HolyArrs rechaza una lista que no puede verificar.
Después de una versión, comprueba que la etiqueta de versión de la imagen coincide con la etiqueta de Git, y vigila los issues nuevos durante el primer día:
docker inspect --format '{{ index .Config.Labels "org.opencontainers.image.version" }}' holyarrsPlantilla de prueba para Unraid
deploy/release/nas-template.py escribe una plantilla de usuario de Unraid para una imagen exacta. No descarga, instala ni publica nada.
python deploy/release/nas-template.py --image 'holyarrs/holyarrs@sha256:<digest>' --config '/mnt/<pool>/appdata/holyarrs-test' --movies /mnt/user/holyarrs-test-data/movies --downloads /mnt/user/holyarrs-test-data/downloads --port 6262 --output holyarrs-test.xmlSustituye <digest> y <pool>.
| Opción | Notas |
|---|---|
--image |
El digest del manifiesto en el registro, no un ID de imagen de Docker |
--config |
Una ruta de pool. La herramienta rechaza /mnt/user y /mnt/user0 |
--movies, --tv, --music, --downloads |
Opcionales. Rutas separadas son montajes separados, así que las importaciones copian |
--port |
De forma predeterminada, 6262 |
--allowed-hosts |
Opcional, nombres de host separados por comas |
--output |
El archivo XML que se escribe |
La plantilla establece PUID=99, PGID=100 y UMASK=022. Da a esa cuenta permiso de escritura sobre los medios de prueba. Pon el archivo en /boot/config/plugins/dockerMan/templates-user/ y elígelo en Docker > Add Container > Template (Docker > Añadir contenedor > Plantilla).
Relacionado
Enlace a RelacionadoHolyArrs es gratis. Si te ahorró tiempo, dale una estrella en GitHub, patrocínalo o invítame a un café.