]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add Debian 11 Bullseye Dockerfile and to CI
authorMatthew Newton <matthew-git@newtoncomputing.co.uk>
Sat, 14 Aug 2021 20:47:06 +0000 (21:47 +0100)
committerMatthew Newton <matthew-git@newtoncomputing.co.uk>
Sat, 14 Aug 2021 21:56:16 +0000 (22:56 +0100)
.github/workflows/ci-deb.yml
scripts/docker/debian11/Dockerfile [new file with mode: 0644]
scripts/docker/debian11/docker-entrypoint.sh [new file with mode: 0755]

index 87ad3ec35400a00ef23b1989f63e1a9e3daa9a1e..69bf560bfdae3422d5c9de6ff69fef4e5453c887 100644 (file)
@@ -20,6 +20,7 @@ jobs:
           - { NAME: "ubuntu-20.04", OS: "ubuntu:20.04" }
           - { NAME: "debian-9",     OS: "debian:stretch" }
           - { NAME: "debian-10",    OS: "debian:buster" }
+          - { NAME: "debian-11",    OS: "debian:bullseye" }
           - { NAME: "debian-sid",   OS: "debian:sid" }
       fail-fast: false
 
@@ -117,6 +118,7 @@ jobs:
           - { NAME: "ubuntu-20.04", OS: "ubuntu:20.04" }
           - { NAME: "debian-9", OS: "debian:stretch" }
           - { NAME: "debian-10", OS: "debian:buster" }
+          - { NAME: "debian-11", OS: "debian:bullseye" }
           - { NAME: "debian-sid", OS: "debian:sid" }
       fail-fast: false
 
diff --git a/scripts/docker/debian11/Dockerfile b/scripts/docker/debian11/Dockerfile
new file mode 100644 (file)
index 0000000..18e76f2
--- /dev/null
@@ -0,0 +1,58 @@
+ARG from=debian:bullseye
+FROM ${from} as build
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+#
+#  Install build tools
+#
+RUN apt-get update
+RUN apt-get install -y devscripts equivs git quilt gcc
+
+#
+#  Create build directory
+#
+RUN mkdir -p /usr/local/src/repositories
+WORKDIR /usr/local/src/repositories
+
+#
+#  Shallow clone the FreeRADIUS source
+#
+ARG source=https://github.com/FreeRADIUS/freeradius-server.git
+ARG release=v3.0.x
+
+RUN git clone --depth 1 --single-branch --branch ${release} ${source}
+WORKDIR freeradius-server
+
+#
+#  Install build dependencies
+#
+RUN git checkout ${release}; \
+    if [ -e ./debian/control.in ]; then \
+        debian/rules debian/control; \
+    fi; \
+    echo 'y' | mk-build-deps -irt'apt-get -yV' debian/control
+
+#
+#  Build the server
+#
+RUN make -j2 deb
+
+#
+#  Clean environment and run the server
+#
+FROM ${from}
+COPY --from=build /usr/local/src/repositories/*.deb /tmp/
+
+RUN apt-get update \
+    && apt-get install -y /tmp/*.deb \
+    && apt-get clean \
+    && rm -r /var/lib/apt/lists/* /tmp/*.deb \
+    \
+    && ln -s /etc/freeradius /etc/raddb
+
+COPY docker-entrypoint.sh /
+
+EXPOSE 1812/udp 1813/udp
+ENTRYPOINT ["/docker-entrypoint.sh"]
+CMD ["freeradius"]
diff --git a/scripts/docker/debian11/docker-entrypoint.sh b/scripts/docker/debian11/docker-entrypoint.sh
new file mode 100755 (executable)
index 0000000..93141b0
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+
+# this if will check if the first argument is a flag
+# but only works if all arguments require a hyphenated flag
+# -v; -SL; -f arg; etc will work, but not arg1 arg2
+if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
+    set -- freeradius "$@"
+fi
+
+# check for the expected command
+if [ "$1" = 'freeradius' ]; then
+    shift
+    exec freeradius -f "$@"
+fi
+
+# many people are likely to call "radiusd" as well, so allow that
+if [ "$1" = 'radiusd' ]; then
+    shift
+    exec freeradius -f "$@"
+fi
+
+# else default to run whatever the user wanted like "bash" or "sh"
+exec "$@"