tweaking snap

This commit is contained in:
Chris Lu 2020-03-12 13:23:25 -07:00
parent c3226ce75a
commit 41bbea0300
2 changed files with 56 additions and 5 deletions

49
snap/README.md Normal file
View File

@ -0,0 +1,49 @@
Hi
This PR adds support for building a snap package of seaweedfs. Snaps are cross distro Linux software packages. One snap can be installed on Ubuntu all supported LTS and non LTS releases from 14.04 onward. Additionally they can installed on Debian, Manjaro, Fedora, OpenSUSE and others. Making a snap of seaweedfs enables you to provide automatic updates on your schedule to your users via the snap store.
If accepted, you can use snapcraft locally, a CI system such as travis or circle-ci, or our free build system (build.snapcraft.io) to create snaps and upload to the store (snapcraft.io/store). The store supports
To test this PR locally, I used an Ubuntu 16.04 VM, with the following steps.
```
snap install snapcraft --classic
git clone https://github.com/popey/seaweedfs
cd seaweedfs
git checkout add-snapcraft
snapcraft
```
The generated a .snap file from the tip of master (I could have checked out a stable release instead). It can be installed with:-
snap install seaweedfs_0.99+git30.79371c0-dirty_amd64.snap --dangerous
(the --dangerous is necessary because were installing an app which hasnt gone through the snap store review process)
Once installed, the (namespaced) weed command can be executed. If you accept this and land the snap in the store, we can request an alias so users can use the weed command rather than the namespaced seaweedfs.weed
- Run the command
- Create sample config. Snaps are securely confined so their home directory is in a different place
mkdir ~/snap/seaweedfs/current/.seaweedfs
seaweedfs.weed scaffold > ~/snap/seaweed/current/.seaweedfs/filer.toml
- Run a server
seaweedfs.weed server
- Run a benchmark
seaweedfs.weed benchmark
Results from my test run: https://paste.ubuntu.com/p/95Xk8zFQ7w/
If landed, you will need to:-
- Register an account in the snap store https://snapcraft.io/account
- Register the seaweedfs name in the store
- snapcraft login
- snapcraft register seaweedfs
- Upload a built snap to the store
- snapcraft push seaweedfs_0.99+git30.79371c0-dirty_amd64.snap --release edge
- Test installing on a clean Ubuntu 16.04 machine
- snap install seaweedfs --edge
The store supports multiple risk levels as “channels” with the edge channel typically used to host the latest build from git master. Stable is where stable releases are pushed. Optionally beta and candidate channels can also be used if needed.
Once you are happy, you can push a stable release to the stable channel, update the store page, and promote the application online (we can help there).

View File

@ -6,10 +6,12 @@ version: git
summary: SeaweedFS summary: SeaweedFS
# Longer multi-line description found in 'snap info $SNAPNAME' # Longer multi-line description found in 'snap info $SNAPNAME'
description: | description: |
SeaweedFS is a simple and highly scalable distributed file system. SeaweedFS is a simple and highly scalable distributed file system,
There are two objectives: to store billions of files! to serve the to store and serve billions of files fast!
files fast! SeaweedFS implements an object store with O(1) disk seek, SeaweedFS implements an object store with O(1) disk seek,
and an optional Filer with POSIX interface. transparent cloud integration, and an optional Filer with POSIX interface,
supporting S3 API, Rack-Aware Erasure Coding for warm storage,
FUSE mount, Hadoop compatible, WebDAV.
# Grade is stable for snaps expected to land in the stable channel # Grade is stable for snaps expected to land in the stable channel
grade: stable grade: stable
@ -31,7 +33,7 @@ parts:
go-importpath: github.com/chrislusf/seaweedfs go-importpath: github.com/chrislusf/seaweedfs
go: go:
# Defines the version of golang which will be bootstrapped into the snap # Defines the version of golang which will be bootstrapped into the snap
source-tag: go1.10.4 source-tag: go1.14
# Apps exposes the binaries inside the snap to the host system once installed # Apps exposes the binaries inside the snap to the host system once installed
apps: apps: