Draft: Add snap packaging
As previously discussed in #524 (closed), this adds snap packaging for Veloren. Ideally, this would be hooked up to your existing CI. Previously, I was using snapcraft's public build infrastructure which continuously delivered new snap builds to the
In order to enable a similar process, the following would be necessary:
- The Veloren team creates a new Ubuntu One account (e.g. called
veloren) which is used to manage snaps in the snap store
- I transfer the snap package to the new account by requesting a transfer in the snapcraft forum
- The Veloren team grants contributors that are interested in maintaining the snap package access to managing the snap in the store by adding them as collaborators
As I don't have the necessary access rights, I could not really test the CI configuration, so there may be some adjustments left to be done. The basic idea is a follows:
SNAPCRAFT_LOGIN_DATA environment variable is set in the GitLab CI/CD settings.
The value for
SNAPCRAFT_LOGIN_DATA can be generated by running:
snapcraft export-login --snaps veloren --channels edge snapcraft-ci.login base64 snapcraft-ci.login
.gitlab/CI/publish.gitlab-ci.yml to build and publish snap packages if there are changes on the default branch. This only publishes snap builds to the
edge channel. Releases need to be tested and published manually. Note that I have not tested this, yet, therefore the Draft status.
Known issues & open questions
- Currently the
homeplug is used which grants the snap access to the home directory. Otherwise, veloren-voxygen crashes on start due to AppArmor denials when trying to access
~/Documentsand a few other locations (presumably for logging, but needs further investigation).
- Veloren seems to be using ALSA. Snaps can access ALSA directly using the
alsainterface. However, this interface doesn't get automatically connected. The current packaging routes ALSA through Pulseaudio using snapcraft-alsa.