Om je snap in de Snap Store te publiceren, moet je eerst een Ubuntu One-account hebben. Maak een nieuw account aan op de website van Ubuntu One. Voer je e-mailadres in, selecteer 'I don’t have an Ubuntu One account' en vul je naam en een wachtwoord in.
Log op Snapcraft in en klik rechtsboven op 'Developer account'. Log dan in met je Ubuntu One-account en accepteer de gebruikersvoorwaarden. Log daarna op de opdrachtregel in met je Snapcraft-account:
snapcraft login
Voordat je je snap kunt uploaden, moet je de naam van de snap registreren. Klik daarom rechtsboven op 'Register a snap name' en vul de naam van je snap in, of registreer je snap op de opdrachtregel met:
snapcraft register theengs-gateway
Voordat je nu een release uitbrengt, moet je zeker verifiëren of je confinement op strict hebt ingesteld en controleren of je toepassing werkt.
Upload daarna je snap met:
snapcraft upload --release=stable theengs-gateway_0.3.0_amd64.snap
Merk op dat dit alleen de snap voor de amd64-architectuur uploadt. Wil je de snap ook voor de andere architecturen beschikbaar maken, dan dien je deze op een andere architectuur te bouwen en te uploaden, ofwel van de mogelijkheid voor remotebuilds gebruik te maken: dan bouw je de snaps via GitHub Actions of op een Launchpad-buildfarm, via de opdracht snapcraft remote-build. Het nadeel van die laatste is dat een dergelijke build even kan duren. Soms heb je in een half uurtje tijd de snaps voor alle architecturen, op andere momenten moet je uren wachten. Lokaal crosscompilen is helaas niet mogelijk in de nieuwste versies van Snapcraft. Je kunt het wel doen met de multi-architecture Docker-container van Snapcraft en met de Snapcraft Multiarch Build Action voor GitHub Actions.
/i/2005254980.png?f=imagenormal)
Zodra de snap in de Snap Store staat, kun je deze eenvoudig op elke Linux-distributie die snapd draait als volgt installeren:
snap install theengs-gateway
Daarna stel je weer de nodige opties in, maak je de juiste verbindingen en start je de service.
/i/2005254982.png?f=imagenormal)
Conclusie
Services voor Linux-distributies packagen in het snapformaat is geen rocketscience, maar je bent er wel even mee bezig. De documentatie van Snapcraft is uitgebreid, maar niet altijd even duidelijk en up-to-date. Bovendien is het snapformaat sterk geëvolueerd, waardoor voorbeeldcode van vroeger of voor oudere cores niet meer werkt. Je moet ook wel even zoeken voor de build zonder foutmeldingen lukt, zeker als je meerdere architecturen wilt ondersteunen.
Het programma Snapcraft heeft wel een goede helpfunctie en geeft duidelijke en concrete foutmeldingen. Met wat iteraties en wat opzoekwerk lukt het zo wel om een service te packagen. Heb je dan uiteindelijk een snap, dan is het voordeel dat je deze op alle ondersteunde Linux-distributies kunt installeren. Snap is bovendien het native pakketformaat voor Ubuntu Core, waarop we in een volgend artikel ingaan.