Как я могу выполнять итерацию быстрее при создании снимка?

10

Я работаю над оснасткой большего программного обеспечения и строю оснастку, удаляя старую, установка новой занимает очень много времени.

Я хотел бы перебрать создание оснастки и более быстрое тестирование. Я знаю, что оснастка собирается просто отлично, теперь я заинтересован в тестировании таких вещей, как запуск приложения и его интеграция. Есть ли способ сделать это?

dholbach
источник

Ответы:

8

Предисловие

Один из способов сделать это - использовать snap try. Из своего --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.

Он также поставляется с опцией:

--devmode     Install in development mode and disable confinement

Это особенно полезно, если вы хотите проверить биты ограничения и правильно использовать интерфейсы.

использование

Способ использовать это просто, просто запустите:

snapcraft prime
snap try prime/

На первом этапе вы говорите, snapcraftчтобы сделать

Final copy and preparation for the snap.

А на втором этапе snapdиспользуется содержимое каталога для «установки» оснастки. Теперь вы можете поэкспериментировать с пакетом, но при этом вносить в него изменения.

пример

Давайте использовать пример из Snappy Playpen, чтобы показать, как это использовать.

Мы используем консул, так как он сравнительно быстр в создании и использовании:

$ 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$ 

Теперь давайте удостоверимся, что у нас нет другой установленной версии, а затем приступим к установке.

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$ 

Все идет нормально. Вроде работает просто отлично. Теперь давайте заменим его /bin/echoпросто чтобы посмотреть, как все работает:

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$  

Как вы можете видеть, мы можем вносить изменения в primeработающую систему , продолжая работать в ограниченном пространстве. Как правило, это хороший способ быстро приступить к настройке и запуску.

Примечание. Начиная с snapdверсии 2.0.10 (2016-07-09), вы должны были сдвинуть моментальную оснастку перед запуском snapcraft cleanили snapdперейти в плохое состояние и скулить о невозможности найти смонтированные привязки. Еще несколько исправлений для 2.0.11, которые должны появиться через несколько дней.

dholbach
источник
1
Вы могли бы упомянуть, что оснастка должна быть удалена до того, как одна из работ snapcraft cleanили оснастка в данный момент переходит в плохое состояние, и жалуется, что не может найти смонтированные привязки. Исправление для этого находится в стадии разработки, но еще не выпущено.
Кайл
Хороший! Добавляем информацию сейчас.
Дхольбах
1
Да, «попробуйте» именно для этого случая использования. Это позволяет вам создать каталог и создать в нем свою оснастку, без необходимости создавать сквош-файлы и перемонтировать их. Вы выполняете итерацию, просто работая в этом каталоге (у вас есть моментальная запись для чтения и записи), пока вы не будете довольны, а затем создадите squashfs из этого каталога.
Марк Шаттлворт