Apply suggestions

This commit is contained in:
Uruk
2024-02-23 18:24:32 +01:00
parent 104f91e697
commit 76a60266d1
5 changed files with 65 additions and 19 deletions

View File

@@ -50,7 +50,7 @@ Inside this repository are 7 major components:
1. Submodules for the `jellyfin` (as `jellyfin-server`) and `jellyfin-web` repositories. These are dynamic submodules; the `checkout.py` script will check them out to the required `HEAD` on each build, and thus their actual committed value is irrelevant. Nonetheless, they should be bumped occasionally just to avoid excessive checkout times later.
2. Debian/Ubuntu packaging configurations (under `debian`). These will build the 3 Jellyfin packages (`jellyfin` metapackage, `jellyfin-server` core server, and `jellyfin-web` web client) from a single Dockerfile and helper script (`build.sh`) under `debian/docker/`. Future packages (e.g. Vue) may be added here as well as if and when they are promoted to a production build alongside the others, following one consistent versioning scheme.
2. Debian/Ubuntu packaging configurations (under `debian`). These will build the 3 Jellyfin packages (`jellyfin` metapackage, `jellyfin-server` core server, and `jellyfin-web` web client) from a single Dockerfile and helper script (`build.sh`) under `debian/docker/`. Future packages (e.g. Vue) may be added here as well if and when they are promoted to a production build alongside the others, following one consistent versioning scheme.
3. Fedora/CentOS packaging configurations (under `fedora`). These will build the same packages as Debian. This is still a TODO.
@@ -82,7 +82,7 @@ Inside this repository are 7 major components:
* Git Submodules to handle code (vs. cross-repo builds)
This ensures that the code checked out is consistent to both repositories and allows for the unified builds described below without extra steps to combine.
This ensures that the code checked out is consistent to both repositories, and allows for the unified builds described below without extra steps to combine.
* Remote manual-only triggers: CI workers are triggered by a remote bot
@@ -90,7 +90,7 @@ Inside this repository are 7 major components:
### Debian/Ubuntu Packages
* Unified packages build: this entire repo is the "source" and the source package is named "jellyfin".
* Unified package build: this entire repo is the "source" and the source package is named "jellyfin".
This was chosen to simplify the source package system and simplify building. Now, there is only a single "jellyfin" source package rather than 2. There may be more in the future as other repos might be included (e.g. "jellyfin-ffmpeg", "jellyfin-vue", etc.)
@@ -112,7 +112,7 @@ TODO - these have not yet been implemented.
### Docker
* Single unified Docker build: the entirety of our Docker images is built as one container from one Dockerfile.
* Single unified Docker build: the entirety of our Docker images are built as one container from one Dockerfile.
This was chosen to keep our Docker builds as simple as possible without requiring 2 intervening images (as was the case with our previous CI).
@@ -132,11 +132,11 @@ TODO - these have not yet been implemented.
* Single unified build: the entirety of the output package is built in one container from one Dockerfile
This was chosen to keep the portable builds as simple as possible without requiring complex archives combining (as was the case with our previous CI).
This was chosen to keep the portable builds as simple as possible without requiring complex archive combining (as was the case with our previous CI).
* Multiple archive type support (`.tar.gz` vs. `.zip`)
The output archive type (`.tar.gz` or `.zip`) is chosen based on the build target, with Portable providing both for maximum compatibility, Windows providing `.zip`, Linux and MacOS provide `.tar.gz`. This can be changed later, for example to add more formats (e.g. `.tar.xz`) or change what produces what, without major complications.
The output archive type (`.tar.gz` or `.zip`) is chosen based on the build target, with Portable providing both for maximum compatibility, Windows providing `.zip, and Linux and MacOS providing `.tar.gz`. This can be changed later, for example to add more formats (e.g. `.tar.xz`) or change what produces what, without major complications.
* Full architecture support

View File

@@ -19,7 +19,7 @@ fi
. /lib/lsb/init-functions
JELLYFIN_HOME="/var/lib/jellyfin/"
JELLYFIN_HOME="/etc/default/jellyfin"
PIDFILE="/run/jellyfin.pid"
case "$1" in

View File

@@ -31,9 +31,22 @@ ENV ARCH=${PACKAGE_ARCH}
RUN apt-get update -y \
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
apt-get install --no-install-recommends -y \
wget debhelper gnupg devscripts build-essential mmv lsb-release \
libssl*.* liblttng-ust* libfontconfig*-dev libcurl*openssl-dev \
libfreetype*-dev libssl-dev
wget \
debhelper \
gnupg \
devscripts \
build-essential \
mmv \
lsb-release \
libssl*.* \
liblttng-ust* \
libfontconfig*-dev \
libcurl*openssl-dev \
libfreetype*-dev \
libssl-dev \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
# Prepare the cross-toolchain
RUN if test "${PACKAGE_ARCH}" != "$( dpkg --print-architecture )"; then \
@@ -64,6 +77,9 @@ RUN if test "${PACKAGE_ARCH}" != "$( dpkg --print-architecture )"; then \
libc6-dev:${PACKAGE_ARCH} linux-libc-dev:${PACKAGE_ARCH} libgcc1:${PACKAGE_ARCH} libstdc++-${GCC_VERSION}-dev:${PACKAGE_ARCH} \
libfontconfig*-dev:${PACKAGE_ARCH} libcurl*openssl-dev:${PACKAGE_ARCH} libfreetype*-dev:${PACKAGE_ARCH} libssl-dev:${PACKAGE_ARCH} \
libssl[13].*:${PACKAGE_ARCH} liblttng-ust*:${PACKAGE_ARCH} \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
; fi
# Prepare dotnet SDK

View File

@@ -38,9 +38,18 @@ ARG JELLYFIN_VERSION
ENV JELLYFIN_VERSION=${JELLYFIN_VERSION}
RUN apk add \
autoconf g++ make libpng-dev \
gifsicle alpine-sdk automake \
libtool gcc musl-dev nasm python3
autoconf \
g++ \
make \
libpng-dev \
gifsicle \
alpine-sdk\
automake \
libtool \
gcc \
musl-dev \
nasm \
python3
WORKDIR ${SOURCE_DIR}
COPY jellyfin-web .
@@ -114,15 +123,22 @@ ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
# Install dependencies:
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests --yes \
ca-certificates gnupg curl \
ca-certificates \
gnupg \
curl \
apt-transport-https \
&& curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key \
| gpg --dearmor -o /etc/apt/trusted.gpg.d/debian-jellyfin.gpg \
&& echo "deb [arch=${PACKAGE_ARCH}] https://repo.jellyfin.org/debian ${OS_VERSION} main" > /etc/apt/sources.list.d/jellyfin.list \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests --yes \
${FFMPEG_PACKAGE} openssl locales libfontconfig1 libfreetype6 \
${FFMPEG_PACKAGE} \
openssl \
locales \
libfontconfig1 \
libfreetype6 \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen \
&& apt-get remove gnupg --yes \
&& apt-get remove gnupg apt-transport-https --yes \
&& apt-get clean autoclean --yes \
&& apt-get autoremove --yes \
&& rm -rf /var/cache/apt/archives* /var/lib/apt/lists/*

View File

@@ -25,9 +25,23 @@ ENV ARCHIVE_TYPES=targz
RUN apt-get update -y \
&& DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC \
apt-get install --no-install-recommends -y \
wget debhelper gnupg devscripts build-essential mmv lsb-release zip \
libssl*.* liblttng-ust* libssl-dev \
libfontconfig*-dev libcurl*openssl-dev libfreetype*-dev
wget \
debhelper \
gnupg \
devscripts \
build-essential \
mmv \
lsb-release\
zip \
libssl*.* \
liblttng-ust*\
libssl-dev \
libfontconfig*-dev \
libcurl*openssl-dev \
libfreetype*-dev \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*
# Prepare dotnet SDK
RUN wget https://packages.microsoft.com/config/${PACKAGE_TYPE}/${PACKAGE_VERSION}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \