Skip to content

build(packaging): ship structured-proxy as RPM/DEB to repo.sw.foundation #54

Description

@polaz

Problem

structured-proxy ships only as a crates.io crate and a GitHub release. There is no native package for the binary, so deploying it on a Fedora/Debian/Ubuntu host means building from source or vendoring the artifact by hand.

Solution

Add native RPM/DEB packaging for the structured-proxy binary and publish it to repo.sw.foundation, mirroring the established pattern used by other SW binaries.

  • packaging/ with a systemd unit, a sample config, a system-user (sysusers.d) declaration, an RPM spec, and a Debian source tree.
  • A release workflow that builds a static musl binary (amd64 + arm64), produces .rpm (Fedora 42/43/44) and .deb (bookworm/jammy/noble) packages, attaches them to the GitHub release, uploads them as artifacts, and dispatches the repo publish workflow.
  • The proxy is stateless: no data directory, no tmpfiles. The package installs the unit but does not enable/start it — the binary needs a service-specific config (proto descriptors + upstream) before it can run.

Acceptance criteria

  • cargo-independent install: dnf install structured-proxy / apt install structured-proxy lands /usr/bin/structured-proxy, a disabled structured-proxy.service, and /etc/structured-proxy/config.yaml.
  • Packages built for amd64 + arm64 across the listed distros, attached to the release and uploaded as deb-* / rpm-fc* artifacts plus repo-meta-structured-proxy.
  • Release workflow triggers on GitHub release creation and dispatches publish-from-structured-proxy to the repo repository.
  • Service runs as an unprivileged structured-proxy system user with systemd sandboxing; config is 0640 root:structured-proxy.

Estimate

1d (packaging assets + spec/debian tree, release workflow, repo-side wiring is a separate issue)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions