Como posso iterar mais rapidamente ao criar um snap?

10

Eu estou trabalhando em um piscar de um software maior e construindo o snap, removendo o antigo, a instalação do novo leva muito tempo.

Gostaria de repetir a criação do snap e testar as coisas mais rapidamente. Eu sei que o snap constrói muito bem, agora estou interessado em testar coisas como o lançamento do aplicativo e sua integração. Existe uma maneira de fazer isso?

    
por dholbach 07.07.2016 / 10:50

1 resposta

8

Prefácio

Uma maneira de fazer isso é usar snap try . De sua mensagem --help :

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.

Ele também vem com uma opção:

--devmode     Install in development mode and disable confinement

Isso é particularmente útil se você quiser testar os bits de confinamento e obter o uso correto das interfaces.

Uso

A maneira de usar isso é simples, basta executar:

snapcraft prime
snap try prime/

No primeiro passo, você diz snapcraft para fazer o

Final copy and preparation for the snap.

E na segunda etapa, snapd faz uso do conteúdo do diretório para "instalar" o snap. Agora você pode brincar com o pacote enquanto ainda pode fazer alterações nele.

Exemplo

Vamos usar um exemplo do Snappy Playpen para mostrar como usar isso.

Estamos usando o consul porque é relativamente rápido construir e 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$ 

Agora vamos nos certificar de que não temos outra versão instalada e, em seguida, prosseguir com a instalação.

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$ 

Até aí tudo bem. Parece funcionar muito bem. Agora vamos substituí-lo por /bin/echo apenas para ver como as coisas funcionam:

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 você pode ver, podemos fazer alterações no sistema ao vivo em prime enquanto ainda executamos as tarefas em confinamento. Esta é geralmente uma boa maneira de fazer o snap funcionar e ser totalmente testado rapidamente.

Observação: Com snapd antes de 2.0.10 (2016-07-09), você precisou desativar o snap antes de executar snapcraft clean ou snapd entraria em um estado ruim e lamento por não conseguir encontrar snaps montados. Algumas outras correções estão alinhadas para a versão 2.0.11, que também deve chegar em poucos dias.

    
por dholbach 07.07.2016 / 11:11