¿Cómo puedo iterar más rápido al crear un complemento?

10

Estoy trabajando en un complemento de un software más grande y construyo el complemento, elimino el antiguo e instalo el nuevo, solo lleva mucho tiempo.

Me gustaría repetir la creación del complemento y probar las cosas más rápidamente. Sé que el complemento se construye bien, ahora estoy interesado en probar cosas como iniciar la aplicación y su integración. ¿Hay alguna forma de hacer esto?

dholbach
fuente

Respuestas:

8

Prefacio

Una forma de hacerlo es usarlo snap try. De su --helpmensaje:

The try command installs an unpacked snap into the system for testing
purposes. The unpacked snap content continues to be used even after 
installation, so non-metadata changes there go live instantly. Metadata
changes such as those performed in snap.yaml will require reinstallation 
to go live.

También viene con una opción:

--devmode     Install in development mode and disable confinement

Esto es particularmente útil si desea probar bits de confinamiento y utilizar correctamente las interfaces.

Uso

La forma de usar esto es simple, simplemente ejecute:

snapcraft prime
snap try prime/

En el primer paso le dices snapcraftque hagas

Final copy and preparation for the snap.

Y en el segundo paso snapdhace uso de los contenidos del directorio para "instalar" el complemento. Ahora puede jugar con el paquete sin dejar de hacer cambios.

Ejemplo

Usemos un ejemplo del Snappy Playpen para mostrar cómo usar esto.

Estamos usando cónsul ya que es relativamente rápido construir y usar:

$ git clone https://github.com/ubuntu/snappy-playpen
$ cd snappy-playpen/consul/
snappy-playpen/consul$ snapcraft prime
Preparing to pull consul 
[...]
Staging consul 
Priming consul 
snappy-playpen/consul$ 

Ahora asegurémonos de que no tengamos instalada otra versión y luego procedamos con la instalación.

snappy-playpen/consul$ which consul
snappy-playpen/consul$ snap try prime

Name    Version  Rev  Developer  Notes
consul  0.6.4    x1              try
snappy-playpen/consul$ consul --help
usage: consul [--version] [--help] <command> [<args>]

Available commands are:
    agent          Runs a Consul agent
[...]
snappy-playpen/consul$ 

Hasta ahora tan bueno. Parece funcionar bien. Ahora vamos a reemplazarlo /bin/echosolo para ver cómo funcionan las cosas:

snappy-playpen/consul$ cp /bin/echo prime/bin/consul 
snappy-playpen/consul$ consul --help
Usage: /snap/consul/x1/bin/consul [SHORT-OPTION]... [STRING]...
   or:  /snap/consul/x1/bin/consul LONG-OPTION
Echo the STRING(s) to standard output.
[...]
daniel@daydream:/tmp/test/snappy-playpen/consul$  

Como puede ver, podemos hacer cambios en el sistema en vivo primemientras ejecutamos las cosas en confinamiento. Por lo general, esta es una buena manera de poner en funcionamiento el complemento y probarlo completamente rápidamente.

Nota: Con snapdantes de 2.0.10 (07/09/2016), había que temove el complemento antes de ejecutar snapcraft cleano snapdse obtendría en un mal estado y se quejan de no poder encontrar broches de presión montados. Algunas soluciones más están alineadas para 2.0.11, que también debería aterrizar en unos días.

dholbach
fuente
1
Puede considerar mencionar que el complemento debe eliminarse antes de que uno se ejecute snapcraft cleano el complemento se encuentre actualmente en un mal estado y se queje de no poder encontrar instantáneas montadas. La solución está en progreso para eso, pero aún no se ha lanzado.
Kyle
¡Buena esa! Agregando la información ahora.
dholbach
1
Sí, 'prueba rápida' es exactamente para este caso de uso. Le permite hacer un directorio y construir su complemento en él, sin tener que seguir haciendo los squashfs y volver a montarlo. Usted itera simplemente trabajando en ese directorio (efectivamente tiene un complemento de lectura-escritura) hasta que esté contento, luego haga que los squashfs salgan de ese directorio.
Mark Shuttleworth