#################################### ##FILL ME IN #################################### ## links to any required tutorials ## note.0=[[ROS/Tutorials/ExaminingPublisherSubscriber|examining the simple publisher and subscriber]] ## descriptive title for the tutorial ## title = Packaging your ROS project as a snap ## multi-line description to be displayed in search ## description = This tutorial covers how to package and deploy your ROS project as a snap. ## the next tutorial description (optional) ## next = ## links to next tutorial (optional) ## next.0.link= [[WritingTutorials|Writing a Tutorial]] ## next.1.link= ## what level user is this tutorial for ## level= IntermediateCategory ## keywords = #################################### <> <> <> == What are snaps? == [[https://snapcraft.io/docs/robotics|Snaps]] are containers that bundle an application and all its dependencies. They offer several features that address important concerns as one gets closer to shipping a robotic platform: * '''Container solution''': Snaps bundle all your dependencies and assets in one package (including ROS) making your application installable on dozens of Linux distributions and across distro versions. * '''Strict confinement''': Snaps are designed to be [[https://snapcraft.io/docs/snap-confinement|secure and isolated]] from the underlying system and other applications, with [[https://snapcraft.io/docs/supported-interfaces|dedicated interfaces]] to access the host machine. * '''Managing updates''': Snaps can update [[https://snapcraft.io/docs/keeping-snaps-up-to-date|automatically and transactionally]], making sure the device is never broken and always up-to-date. * '''Release management''': Snaps' [[https://snapcraft.io/docs/channels|multiple release]] channels allow you to have role-based access controls and application versioning, making A/B testing easy and releasing fixes faster. {{{#!wiki version noetic <> }}} {{{#!wiki version melodic <> }}} {{{#!wiki version kinetic <> }}} == Sharing the snap with the world == Emailing snaps to people doesn't scale, but more importantly, it gives the snap users no upgrade path. If you make your snap available in the [[https://snapcraft.io/|snap store]], whenever you release a new version, your robots (or users) will automatically update. In order to do this, you'll need to create a (free) store account at [[https://snapcraft.io/|snapcraft.io]]. Then, using Snapcraft, login with that account: {{{ $ snapcraft login }}} Remember our previous discussion about how snap names need to be unique. Before you can release your snap in the store, you need to register the snap name to your store account: {{{ $ snapcraft register }}} Finally, push the snap up to the store and release it into the `stable` channel: {{{ $ snapcraft push path/to/my.snap --release=stable }}} Once the upload and automated reviews finish successfully, anyone in the world can install your snap as simply as: {{{ $ sudo snap install }}} And they can rest secure knowing that when you release an update, they'll get it, no further work required. ## AUTOGENERATED DO NOT DELETE ## TutorialCategory ## FILL IN THE STACK TUTORIAL CATEGORY HERE