Skip to content

Commit e750a2f

Browse files
dkorunicmjuraga
authored andcommitted
BUILD/MEDIUM: goreleaser: Build apk, rpm and deb packages
Use nFPM to build APK (Alpine), RPM (RHEL/CentOS/Rocky/Alma etc.) and DEB (Ubuntu/Debian) packages. Additionally generate automatic Changelog and provide a sample config for binary archives and packages.
1 parent 59c898f commit e750a2f

File tree

8 files changed

+149
-4
lines changed

8 files changed

+149
-4
lines changed

.goreleaser.yml

Lines changed: 83 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ before:
33
hooks:
44
- go mod download
55
- go mod tidy
6-
- make clean
7-
- mkdir build/
86
builds:
97
-
108
id: my-build
11-
main: ./cmd/dataplaneapi/main.go
12-
binary: ./build/dataplaneapi
9+
main: ./cmd/dataplaneapi
10+
binary: dataplaneapi
1311
ldflags:
1412
- -s -w -X main.GitRepo={{.GitURL}} -X main.GitTag={{.Tag}} -X main.GitCommit={{.ShortCommit}} -X main.GitDirty= -X main.BuildTime={{.Date}}
1513
env:
@@ -25,6 +23,9 @@ builds:
2523
- arm64
2624
- ppc64le
2725
- s390x
26+
changelog:
27+
sort: asc
28+
use: git
2829
archives:
2930
-
3031
id: my-archive
@@ -37,6 +38,15 @@ archives:
3738
freebsd: FreeBSD
3839
386: i386
3940
amd64: x86_64
41+
files:
42+
- LICENSE
43+
- README.md
44+
- src: dist/CHANGELOG.md
45+
dst: ""
46+
strip_parent: true
47+
- src: assets/packages/dataplaneapi.yml.dist
48+
dst: ""
49+
strip_parent: true
4050
checksum:
4151
name_template: 'checksums.txt'
4252
snapshot:
@@ -53,3 +63,72 @@ release:
5363
Build date: {{.Date}}
5464
draft: true
5565
name_template: "HAProxy Data Plane API v{{.Version}}"
66+
nfpms:
67+
-
68+
id: my-package
69+
package_name: dataplaneapi
70+
builds:
71+
- my-build
72+
vendor: HAProxy Technologies
73+
homepage: https://github.com/haproxytech/dataplaneapi
74+
maintainer: Marko Juraga <[email protected]>
75+
description: HAProxy Data Plane API - API endpoints for managing HAProxy
76+
license: Apache 2.0
77+
formats:
78+
- apk
79+
- deb
80+
- rpm
81+
dependencies:
82+
- haproxy
83+
bindir: /usr/sbin
84+
section: net
85+
priority: optional
86+
contents:
87+
- dst: /etc/dataplaneapi
88+
type: dir
89+
file_info:
90+
owner: root
91+
group: root
92+
mode: 0750
93+
- dst: /var/lib/dataplaneapi
94+
type: dir
95+
file_info:
96+
owner: root
97+
group: root
98+
mode: 0750
99+
- src: assets/packages/dataplaneapi.yml.dist
100+
dst: /etc/dataplaneapi/dataplaneapi.yml
101+
type: "config|noreplace"
102+
file_info:
103+
owner: root
104+
group: root
105+
mode: 0640
106+
- src: assets/packages/dataplaneapi.service
107+
dst: /etc/systemd/system/dataplaneapi.service
108+
type: config
109+
file_info:
110+
owner: root
111+
group: root
112+
mode: 0640
113+
- src: assets/packages/default
114+
dst: /etc/default/dataplaneapi
115+
type: config
116+
file_info:
117+
owner: root
118+
group: root
119+
mode: 0640
120+
- src: assets/packages/logrotate
121+
dst: /etc/logrotate.d/dataplaneapi
122+
type: config
123+
file_info:
124+
owner: root
125+
group: root
126+
mode: 0640
127+
scripts:
128+
postinstall: "assets/packages/post-install.sh"
129+
preremove: "assets/packages/pre-uninstall.sh"
130+
postremove: "assets/packages/post-uninstall.sh"
131+
deb:
132+
lintian_overrides:
133+
- statically-linked-binary
134+
- changelog-file-missing-in-native-package
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[Unit]
2+
Description=HAProxy Data Plane API
3+
After=syslog.target network-online.target
4+
5+
[Service]
6+
Environment="PIDFILE=/run/dataplaneapi.pid"
7+
EnvironmentFile=/etc/default/dataplaneapi
8+
ExecStart=/usr/sbin/dataplaneapi $SYSD_OPTIONS
9+
ExecReload=/bin/kill -s SIGUSR1 $MAINPID
10+
Type=simple
11+
PIDFile=
12+
GuessMainPID=1
13+
14+
[Install]
15+
WantedBy=multi-user.target
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
dataplaneapi:
2+
host: 0.0.0.0
3+
port: 5555
4+
userlist:
5+
userlist: dataplaneapi
6+
resources:
7+
maps_dir: /etc/haproxy/maps
8+
ssl_certs_dir: /etc/haproxy/ssl
9+
general_storage_dir: /etc/haproxy/general
10+
spoe_dir: /etc/haproxy/spoe
11+
transaction:
12+
transaction_dir: /var/lib/dataplaneapi/transactions
13+
backups_number: 10
14+
backups_dir: /var/lib/dataplaneapi/backups
15+
haproxy:
16+
config_file: /etc/haproxy/haproxy.cfg
17+
haproxy_bin: /usr/sbin/haproxy
18+
reload:
19+
reload_delay: 5
20+
service_name: haproxy
21+
reload_strategy: systemd
22+
log_targets:
23+
- log_to: file
24+
log_file: /var/log/dataplaneapi.log
25+
log_level: info
26+
log_types:
27+
- access
28+
- app

assets/packages/default

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Options for dataplaneapi
2+
3+
SYSD_OPTIONS='-f /etc/dataplaneapi/dataplaneapi.yml'

assets/packages/logrotate

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/var/log/dataplaneapi.log {
2+
missingok
3+
compress
4+
notifempty
5+
copytruncate
6+
daily
7+
rotate 7
8+
create 0640 root root
9+
}

assets/packages/post-install.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/sh
2+
3+
systemctl --system daemon-reload || true
4+
systemctl enable dataplaneapi || true

assets/packages/post-uninstall.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
systemctl --system daemon-reload || true

assets/packages/pre-uninstall.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/sh
2+
3+
systemctl stop dataplaneapi || true
4+
systemctl disable dataplaneapi || true

0 commit comments

Comments
 (0)