RPM/DEB Package signatures
Is your feature request related to a problem?
- Users can install the latest deb/rpm package of devpod automatedly and securely (with apt and dnf checking GPG signatures on the pkgrepo of packages and the packages themselves)
- devpod is not in the [distro] package repos
- Devpod Desktop does autoupdate, but DEB/RPM have to be updated by hand from gh releases
- https://github.com/loft-sh/devpod/releases/download/v0.3.7/latest.json does not mention the RPMs or DEBs
Which solution do you suggest?
Which alternative solutions exist?
- Parse github releases for just the devpod package in a separate cron task
- Build native packages with the distro builders using their repo building systems
- Ubuntu: PPA
- See the links in comments on the BespokeSynth issue
- Fedora: Rawhide, COPR; TIL about Packit-as-a-service
- https://packit.dev/docs/guide
- https://github.com/marketplace/packit-as-a-service
- https://packit.dev/docs/guide
- [...]
- https://github.com/rpm-software-management/tito
https://github.com/rpm-software-management/tito#related-projects
- https://www.google.com/search?q=open+build+service
- Ubuntu: PPA
- https://github.com/BespokeSynth/BespokeSynth/issues/108#issuecomment-919890002
- https://www.google.com/search?q=how+to+how+rpms+and+debs+on+github
- "Using Github Actions to create Debian (DEB) and RedHat (RPM) Packages and Repositories" [for hosting w/ GitHub Pages but not Release attachments] https://jon.sprig.gs/blog/post/2835
Additional context
Hi @westurner, thank you for opening the issue.
Users can install the latest deb/rpm package of devpod automatedly and securely (with apt and dnf checking GPG signatures on the pkgrepo of packages and the packages themselves) devpod is not in the [distro] package repos
sounds like a good addition to me, but I'm not really familiar with the rpm/deb landscape. Would you be open to contribute this with my support?
Devpod Desktop does autoupdate, but DEB/RPM have to be updated by hand from gh releases
That's a restriction by tauri at the moment as they don't support deb/rpm packages. We're building those in the CD pipeline for convencience but don't have strong support for it as of yet. Imo integrating it into the auto updater mechanism upstream would be more work than we're currently comfortable putting in. If there's strong enough community interest, we could look into it.
Generally I can only encourage you to contribute this, and we'll support you wherever we can
Not sure when this'll be a priority. FWIu a more current way to handle packagesec is to implement SLSA, which
- https://slsa.dev/
- https://github.com/slsa-framework/slsa-verifier#what-is-slsa-verifier
https://github.com/slsa-framework/slsa-github-generator#what-is-slsa-github-generator
Just generating a repomd.xml from the RPM release URLs and hashes (with createrepo_c or createrepo) should be easy enough once the gh releases are parsed, or does the builder need to download every package in order to sign the repomd.xml?
Is it createrepo for RPM and aptly for DEB package repos?
Is there enough metadata about release assets in the gh api to not need to download and hash each package every time the repomd.xml file is regenerated? https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28
https://wiki.debian.org/DebianRepository/Setup
https://www.aptly.info/
On Mon, Sep 18, 2023, 4:46 AM Pascal Breuninger @.***> wrote:
Hi @westurner https://github.com/westurner, thank you for opening the issue.
Users can install the latest deb/rpm package of devpod automatedly and securely (with apt and dnf checking GPG signatures on the pkgrepo of packages and the packages themselves) devpod is not in the [distro] package repos
sounds like a good addition to me, but I'm not really familiar with the rpm/deb landscape. Would you be open to contribute this with my support?
Devpod Desktop does autoupdate, but DEB/RPM have to be updated by hand from gh releases
That's a restriction by tauri https://tauri.app/v1/guides/distribution/updater at the moment as they don't support deb/rpm packages. We're building those in the CD pipeline for convencience but don't have strong support for it as of yet. Imo integrating it into the auto updater mechanism upstream would be more work than we're currently comfortable putting in. If there's strong enough community interest, we could look into it.
Generally I can only encourage you to contribute this, and we'll support you wherever we can
— Reply to this email directly, view it on GitHub https://github.com/loft-sh/devpod/issues/698#issuecomment-1722990388, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAMNS5IK3O43YP4JBYGMX3X3ADAHANCNFSM6AAAAAA44GTH64 . You are receiving this because you were mentioned.Message ID: @.***>
Hi @westurner
Yes for now deb/rpm are lower prio I personally would give priority to one of the universal packages (appimage/flatpak) in order to reduce our maintenance burden, as setting up repos and whatnot is not in scope
Flatpak
- https://docs.flatpak.org/en/latest/first-build.html#add-a-manifest
- https://docs.flatpak.org/en/latest/manifests.html
- https://github.com/flatpak/flatpak-github-actions #building-for-multiple-cpu-architectures
- https://flatpak-testing.readthedocs.io/en/latest/distributing-applications.html#gpg-signatures
Note that it is necessary to become root in order to update a remote that does not have GPG verification enabled.
- https://slsa.dev/blog/2023/08/bring-your-own-builder-github
- https://github.com/flatpak/flatpak-github-actions/blob/0a7e6df021640fac36d460232f9d5dc68821e702/flatpak-builder/index.js#L204
conda-forge
- https://github.com/conda-forge/conda-feedstock#about-conda-forge
- https://conda-forge.org/docs/maintainer/adding_pkgs.html#step-by-step-instructions
- https://github.com/conda-forge/go-feedstock/blob/main/recipe/meta.yaml
- https://github.com/conda-forge/sphinxcontrib-golangdomain-feedstock/blob/main/recipe/meta.yaml s/Ruby/Golang/
- https://github.com/conda-forge/go-task-feedstock/blob/main/recipe/meta.yaml
- https://github.com/conda/conda-content-trust
github actions + slsa:
- https://slsa.dev/blog
- "General Availability of SLSA 3 Go native builder for GitHub Actions" https://slsa.dev/blog/2022/06/slsa-github-workflows
On Tue, Sep 19, 2023 at 3:05 AM Luca Di Maio @.***> wrote:
Hi @westurner https://github.com/westurner
Yes for now deb/rpm are lower prio I personally would give priority to one of the universal packages (appimage/flatpak) in order to reduce our maintenance burden, as setting up repos and whatnot is not in scope
— Reply to this email directly, view it on GitHub https://github.com/loft-sh/devpod/issues/698#issuecomment-1724942380, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAMNS6YD2XQR7OGKVMEJC3X3E74BANCNFSM6AAAAAA44GTH64 . You are receiving this because you were mentioned.Message ID: @.***>
Actually, because devpod must have the system (and not the rootless?) DOCKER_SOCKET, devpod+podman[+k8s] could really be in a VM. One way to manage local VMs is with a Vagrantfile:
- https://github.com/containers/podman-tui/blob/main/Vagrantfile
- https://github.com/brancz/vagrant-golang/blob/master/Vagrantfile
Rootless podman / docker instead of or in addition to a VM is probably advisable? Is that a separate issue or an issue of how the RPM package should/could work by default?
- "about act_runner run in rootless docker" (which now just works fwiu) https://gitea.com/gitea/act_runner/issues/170
- https://github.com/go-gitea/gitea/issues/24438
- https://news.ycombinator.com/item?id=36408748