Skip to content

Commit 38c0204

Browse files
ci: build rpm, dev and apk packages
1 parent 50b438f commit 38c0204

File tree

7 files changed

+112
-2
lines changed

7 files changed

+112
-2
lines changed

build-packages.sh

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ if ! command -v ruby &>/dev/null; then
1717
fi
1818

1919
if ! command -v fpm &>/dev/null; then
20-
echo "Error: FPM (rubygem-fpm) is required to create RPM packages."
20+
echo "Error: FPM (rubygem-fpm) is required to create RPM and DEB packages."
2121
echo "Install it with: sudo gem install fpm"
2222
exit 1
2323
fi
@@ -116,4 +116,25 @@ fpm -s dir -t deb -n frankenphp -v "${frankenphp_version}" \
116116
[ "$user_preexists" -eq 0 ] && sudo userdel frankenphp
117117
[ "$group_preexists" -eq 0 ] && (sudo groupdel frankenphp || true)
118118

119+
echo "Creating APK package using FPM..."
120+
fpm -s dir -t apk -n frankenphp -v "${frankenphp_version}" \
121+
--architecture "${arch}" \
122+
--config-files /etc/frankenphp/Caddyfile \
123+
--config-files /etc/frankenphp/php.ini \
124+
--depends "musl" \
125+
--depends "libstdc++" \
126+
--after-install ../package/alpine/frankenphp.post-install \
127+
--before-remove ../package/alpine/frankenphp.pre-deinstall \
128+
--after-remove ../package/alpine/frankenphp.post-deinstall \
129+
--iteration "${iteration}" \
130+
"${bin}=/usr/bin/frankenphp" \
131+
"../package/alpine/frankenphp.openrc=/etc/init.d/frankenphp" \
132+
"../package/rhel/frankenphp.service=/usr/lib/systemd/system/frankenphp.service" \
133+
"../package/Caddyfile=/etc/frankenphp/Caddyfile" \
134+
"../package/content/=/usr/share/frankenphp" \
135+
"../package/etc/php.ini=/etc/frankenphp/php.ini" \
136+
"../package/empty/=/etc/frankenphp/php.d" \
137+
"../package/empty/=/usr/lib/frankenphp/modules" \
138+
"../package/empty/=/var/lib/frankenphp"
139+
119140
cd ..

build-static.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,11 @@ fi
311311
go env
312312
cd caddy/
313313
if [ -z "${SPC_LIBC}" ] || [ "${SPC_LIBC}" = "musl" ]; then
314-
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,static_build,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-static-pie ${muslStackSizeFix}' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
314+
if [ "${CC}" = "gcc" ]; then
315+
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-pie ${muslStackSizeFix}' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
316+
else
317+
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,static_build,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-static-pie ${muslStackSizeFix}' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
318+
fi
315319
elif [ "${SPC_LIBC}" = "glibc" ]; then
316320
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-pie' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
317321
fi

package/alpine/frankenphp.openrc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/sbin/openrc-run
2+
3+
name="FrankenPHP"
4+
description="Modern PHP app server"
5+
6+
command="/usr/bin/frankenphp"
7+
command_args="run --environ --config /etc/frankenphp/Caddyfile"
8+
command_user="frankenphp:frankenphp"
9+
command_background="yes"
10+
pidfile="/run/frankenphp/frankenphp.pid"
11+
start_stop_daemon_args="--chdir /var/lib/frankenphp"
12+
13+
depend() {
14+
need net
15+
after firewall
16+
}
17+
18+
start_pre() {
19+
checkpath --directory --owner frankenphp:frankenphp --mode 0755 /run/frankenphp
20+
21+
$command validate --config /etc/frankenphp/Caddyfile
22+
}
23+
24+
reload() {
25+
ebegin "Reloading $name configuration"
26+
$command reload --config /etc/frankenphp/Caddyfile --force
27+
eend $?
28+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
3+
if getent passwd frankenphp >/dev/null; then
4+
deluser frankenphp
5+
fi
6+
7+
if getent group frankenphp >/dev/null; then
8+
delgroup frankenphp
9+
fi
10+
11+
rmdir /var/lib/frankenphp 2>/dev/null || true
12+
13+
exit 0
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/sh
2+
3+
if ! getent group frankenphp >/dev/null; then
4+
addgroup -S frankenphp
5+
fi
6+
7+
if ! getent passwd frankenphp >/dev/null; then
8+
adduser -S -h /var/lib/frankenphp -s /sbin/nologin -G frankenphp -g "FrankenPHP web server" frankenphp
9+
fi
10+
11+
chown -R frankenphp:frankenphp /var/lib/frankenphp
12+
chmod 755 /var/lib/frankenphp
13+
14+
# allow binding to privileged ports
15+
if command -v setcap >/dev/null 2>&1; then
16+
setcap cap_net_bind_service=+ep /usr/bin/frankenphp || true
17+
fi
18+
19+
# trust FrankenPHP certificates
20+
if [ -x /usr/bin/frankenphp ]; then
21+
HOME=/var/lib/frankenphp /usr/bin/frankenphp trust || true
22+
fi
23+
24+
if command -v rc-update >/dev/null 2>&1; then
25+
rc-update add frankenphp default
26+
rc-service frankenphp start
27+
fi
28+
29+
exit 0
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/sh
2+
3+
if command -v rc-service >/dev/null 2>&1; then
4+
rc-service frankenphp stop || true
5+
fi
6+
7+
if command -v rc-update >/dev/null 2>&1; then
8+
rc-update del frankenphp default || true
9+
fi
10+
11+
exit 0

static-builder-musl.Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ ENV SPC_OPT_BUILD_ARGS='--with-config-file-path=/etc/frankenphp --with-config-fi
9999
ENV SPC_REL_TYPE='binary'
100100
ENV EXTENSION_DIR='/usr/lib/frankenphp/modules'
101101

102+
ENV CC='gcc'
103+
ENV CXX='g++'
104+
ENV CGO_LDFLAGS_ALLOW='-Wl,--allow-multiple-definition'
105+
102106
RUN --mount=type=secret,id=github-token \
103107
GITHUB_TOKEN=$(cat /run/secrets/github-token) ./build-static.sh && \
104108
rm -Rf dist/static-php-cli/source/*

0 commit comments

Comments
 (0)