Requesting approval for GoReleaser's classic snap

I’m planning to auto-upload every version of goreleaser to the snap store - and also to add this feature to GoReleaser itself.

Maybe useful links:

Let me know if I need to do anything, thanks!

2 Likes

Any updates on this?

Sorry for the delay. Can you describe specifically why this snap requires classic?

Sure @jdstrand!

GoReleaser needs the go compiler, the snap binary itself, git, and several other things to build and release go programs and its packages.

More details can be found in this issue: https://github.com/goreleaser/goreleaser/pull/684

it should bundle these bits (i.e. how do you make sure a working (and matching) go compiler (and the “several other bits” you mention) is available on the distro you install this snap on (snaps are distro independent).

it works with all versions of the go compiler. If I bundle Go, I will be forcing my users to use that version of go - or I’ll need to bundle all version, and the app will be just too large.

about the other bits, yes, goreleaser will likely fail if you use a very old version of git for example - this will be worked on eventually. Other parts are not always used and depend on how the user wants to package the app.

I’m not saying you must bundle all the go compilers, but it seems like it could and I’d like to better understand the use case (“the snap would be too large” is not typically a reason to use classic confinement. Indeed if it is smaller because you are depending on system components, your snap may not work properly on systems where they aren’t present). Some snaps are large, but you could perhaps use store tracks (eg, a 1.6 track, a 1.8 track, etc) to make them smaller. How many go complers do goreleaser support?

You also mentioned using the ‘snap’ command. What is that for, snap pack? If so, you actually would want to use mksquashfs instead since ‘snap pack’ isn’t going to generate snaps that pass automated review in the store.

git should work fine if you point the snap at $HOME/.gitconfig and use the ssh-keys interface.

What are “several other bits”?

GoReleaser supports virtually all Go compilers :frowning:

It may or may not use rpmbuild, snapcraft itself and docker, depending on the project being released.

@evan, @popey, @Wimpress - AIUI, snapcrafters has been involved with this snap, can you comment? If this indeed needs classic, can you vet the publisher/

Ping - can someone comment?

This snap falls into the problem space of a tool that is used to build things. In most cases these tools require access to the file system, albeit that is not the strict case for goreleaser as it just needs access to GOPATH; unless it uses CGO, where access to the actual development libraries would be needed.

I consider this tool to be just like snapcraft but with a focused view on only working on what it builds (go code) and also relate it to electron-builder in what it outputs, i.e.; a snap, deb, rpm, etc…

There are two views to this tool, how it is distributed itself and what it outputs. With regards to the latter, this tool already supports outputting to snaps, regardless of it being distributed as one and that is its own problem space in itself.

Distributing this tool as a snap with classic confinement would not change in any way how it is distributed today so I would +1 on that alone.

1 Like

Ok, thanks! @Wimpress and/or @popey - can you vet the publisher?

1 Like

@jdstrand Yup! +1 from me, upstream developer is working directly on this, so vetted.

1 Like

Granting use of classic. This is now live.

1 Like

You’ll either want to request a manual review or upload a new revision, after which it should pass automated review.

1 Like