From 12cb3b8e14e21ff54f271e4c2073492f2dfec033 Mon Sep 17 00:00:00 2001 From: Jason Lynch Date: Wed, 25 Mar 2026 15:23:10 -0400 Subject: [PATCH] feat: add rpm to goreleaser build Adds an RPM output to our goreleaser build. To create a test build of the RPM, run: ```sh goreleaser-test-release ``` This will create a `dist` directory with release artifacts, including RPMs for both amd64 and arm64. To install and use the RPM: ```sh sudo su - dnf install -y epel-release dnf dnf config-manager --set-enabled crb dnf update -y --allowerasing dnf install -y https://dnf.pgedge.com/reporpm/pgedge-release-latest.noarch.rpm dnf install -y \ pgedge-postgresql18 \ pgedge-spock50_18 \ pgedge-snowflake_18 \ pgedge-lolor_18 \ pgedge-postgresql18-contrib \ pgedge-pgbackrest \ pgedge-python3-psycopg2 \ python3-pip pip install 'patroni[etcd,jsonlogger]==4.1.0' rpm -i systemctl start pgedge-control-plane.service ``` From there, you can interact with it as normal, e.g.: ```sh curl http://localhost:3000/v1/cluster/init ``` Keep in mind that the host ID will default to the machine's short hostname. To tail the control-plane logs, do: ``` journalctl -u pgedge-control-plane.service --follow ``` PLAT-459 --- .goreleaser.yaml | 18 ++++++++++++++++++ packaging/config.json | 4 ++++ packaging/pgedge-control-plane.service | 16 ++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 packaging/config.json create mode 100644 packaging/pgedge-control-plane.service diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 76c421ea..e44a5cfa 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -26,6 +26,24 @@ sboms: documents: - '${artifact}.spdx.json' +nfpms: + - package_name: pgedge-control-plane + vendor: pgEdge + homepage: https://www.pgedge.com + maintainer: pgEdge Support + description: pgEdge Control Plane + license: PostgreSQL License + formats: + - rpm + bindir: /usr/sbin + contents: + - src: packaging/pgedge-control-plane.service + dst: /usr/lib/systemd/system/pgedge-control-plane.service + type: config + - src: packaging/config.json + dst: /etc/pgedge-control-plane/config.json + type: config|noreplace + release: github: owner: pgEdge diff --git a/packaging/config.json b/packaging/config.json new file mode 100644 index 00000000..223c5bb0 --- /dev/null +++ b/packaging/config.json @@ -0,0 +1,4 @@ +{ + "orchestrator": "systemd", + "data_dir": "/var/lib/pgedge-control-plane" +} diff --git a/packaging/pgedge-control-plane.service b/packaging/pgedge-control-plane.service new file mode 100644 index 00000000..909619e5 --- /dev/null +++ b/packaging/pgedge-control-plane.service @@ -0,0 +1,16 @@ +[Unit] +Description=pgEdge Control Plane +Documentation=https://docs.pgedge.com +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +ExecStart=/usr/sbin/pgedge-control-plane run --config-path /etc/pgedge-control-plane/config.json +Restart=on-failure +RestartSec=5s +StateDirectory=pgedge-control-plane +ConfigurationDirectory=pgedge-control-plane + +[Install] +WantedBy=multi-user.target