Ubuntu

Hora de diversificarse

Hora de diversificarse

Las sucursales son una característica poco utilizada pero importante de las capacidades de publicación de Snap Store. De hecho, mientras escribo esta publicación, nunca tuve la necesidad de usar la función, y he estado publicando instantáneas durante cuatro años y medio. ¡Arreglemos eso!

Empiece con bellotas

El fundamento de las sucursales es simple. Cada complemento en la Tienda Snap tiene una pista predeterminada llamada ‘último’ en la que hay cuatro canales llamados ‘estable’, ‘beta’, ‘candidato’ y ‘borde’. Todos estos son grupos típicos en los que se publican instantáneas durante un período prolongado, tal vez meses o incluso años. Las sucursales, por otro lado, son silos de corta duración para publicar instantáneas.

Como desarrollador, es posible que tenga una aplicación publicada que tenga errores que experimenten los usuarios pero que no pueda reproducir. Se puede usar una rama temporal para mantener una compilación de prueba de la aplicación en la que está trabajando para resolver un error.

Si está rastreando y arreglando varios errores en paralelo, cada uno puede tener su propia rama separada con el mismo nombre instantáneo en la Tienda Snap. Las ramas están ‘ocultas’, por lo que, a menos que alguien adivine el nombre, los usuarios no se encontrarán con compilaciones de corrección de errores potencialmente rotas de su aplicación.

Las sucursales solo están activas durante 30 días, después de lo cual se eliminan, y cualquier usuario con el complemento se moverá a la última pista del canal. Entonces, un usuario que probó la rama latest/stable/fix-bug-12 y no cambió a otro canal en 30 días, se moverá a la latest/stable canal en su próxima actualización.

Germinar

Pongamos un ejemplo. Un usuario presentó una problema sobre el Átomo chasquear bajo el snapcrafters GitHub y proporcionó un solicitud de extracción. Podemos tomar la solicitud de extracción, crear el complemento con sus correcciones, probar y publicar en la tienda en una sucursal para que puedan probarlo.

Esto podría automatizarse con herramientas como Acciones de GitHub, pero en lugar de esa configuración, expliquemos con los pasos manuales.

$ git clone https://github.com/aminya/atom-2.git
$ cd atom-2
$ git checkout -b aminya-libstdc++6 master
$ git pull https://github.com/aminya/atom-2.git libstdc++6
$ snapcraft --use-lxd

Building atom
Building launcher
Staging atom
Staging launcher
Priming atom
Priming launcher
Snapping
Snapped atom_1.53.0_amd64.snap

Instale la aplicación localmente para asegurarse de que no la rompemos por completo.

$ snap install atom_1.53.0_amd64.snap --dangerous

Sube a Snap Store y suéltalo en una sucursal. Seleccioné la última pista ya que es la única pista que usa este complemento. Otras instantáneas pueden usar diferentes pistas para cada versión admitida (por ejemplo, nodo) o tener pistas separadas para compilaciones estables e internas (por ejemplo, Skype). Estamos arreglando la versión estable, así que estoy usando una rama del canal estable.

$ snapcraft upload atom*.snap --release=latest/stable/fix-65
Preparing to upload 'atom_1.53.0_amd64.snap'.
After uploading, the resulting snap revision will be released to 'latest/stable/fix-65' when it passes the Snap Store review.
Install the review-tools from the Snap Store for enhanced checks before uploading this snap.
Pushing 'atom_1.53.0_amd64.snap' [============================] 100%
released
Revision 269 of 'atom' created.
Track Arch Channel Version Revision Expires at
latest amd64 stable 1.53.0 265
candidate ↑ ↑
beta ↑ ↑
edge 1.53.0 268
stable/fix-65 1.53.0 269 2021-02-05T10:34:51Z

Ya podemos ver que la rama existe bajo la última pista, rama estable, pero es posible que deseesmos confirmar esto, especialmente si la carga ocurrió en Acciones de GitHub, un CI u otro sistema remoto donde no podemos ver fácilmente la salida anterior.

$ snapcraft status atom
Track Arch Channel Version Revision Expires at
latest amd64 stable 1.53.0 265
candidate ↑ ↑
beta ↑ ↑
edge 1.53.0 268
stable/fix-65 1.53.0 269 2021-02-05T10:34:51Z

Tenga en cuenta que, como se mencionó anteriormente, solo nosotros, como publicadores, podemos ver la nueva rama. Si una persona que no es un editor mira el mapa de canales, no lo verá. Los no editores no tienen acceso al snapcraft status comando para este complemento, y snap info simplemente no muestra ramas.

$ snap info atom 

channels:
latest/stable: 1.53.0 2020-11-10 (265) 242MB classic
latest/candidate: ↑
latest/beta: ↑
latest/edge: 1.53.0 2020-12-09 (268) 224MB classic
installed: 1.53.0 (x2) 224MB classic

Actualmente sigo rastreando la compilación que «cargué lateralmente» en mi máquina, que puede ver con la revisión con el prefijo «x» en la última línea. Podemos actualizar a la sucursal alojada en la tienda. Tenga en cuenta que, opcionalmente, podemos omitir el nombre de la pista ‘más reciente’, porque es la pista predeterminada (y única). Esto también nos permite probar las instrucciones que podemos proporcionar al autor de la solicitud de extracción.

$ snap refresh atom --amend --channel stable/fix-65
atom (stable/fix-65) 1.53.0 from Snapcrafters refreshed

Nota la --amend La opción solo es necesaria para nosotros porque estamos cambiando de una revisión instalada localmente a una de la tienda. Los usuarios que solo instalaron desde la tienda no lo necesitarán.

Ahora que tenemos la corrección publicada, podemos avisar al colaborador a través de un comentario en la solicitud de extracción. Algo como esto funcionará bien:

“Muchas gracias por la solicitud de extracción. No tengo la capacidad de reproducir el problema en este momento. He publicado una compilación del complemento que incorpora su corrección en una rama. ¿Podría instalar la compilación en un sistema limpio o, si ya tiene instalado el complemento, actualizar a esta rama y probarlo?

snap install atom –canal estable / fix-65
o:
snap refresh atom –canal estable / fix-65

Si está satisfecho con la solución, conseguiré este PR.
¡Gracias de nuevo!»

Una vez que el usuario responde que esto soluciona su problema, podemos conseguir el PR y pasarlo a la próxima versión estable. Si no es así, ¡eso es más ingeniería de software en la lista de tareas pendientes!

Empiece a plantar

Por supuesto, no son solo las correcciones de errores las que pueden usar ramas. Tal vez tenga una nueva función para iniciar suavemente en la aplicación o cambios de diseño con los que le gustaría experimentar. Tener una rama de corta duración que solo es conocida por un grupo limitado de probadores puede ser ventajoso.

Las sucursales son una de esas características que distinguen a Snap Store de otros métodos de distribución para Linux. No es algo que la mayoría de los editores usarán, pero una vez que sepa que está ahí, puede ser muy útil con solo una pequeña curva de aprendizaje.

Únase a nosotros en el foros de snapcraft si deseas discutir esta u otras características de Snapcraft.

Foto por Colin Watts en Unsplash

Leave a Comment

You may also like

Más