Add portable builds
This commit is contained in:
56
portable/Dockerfile
Normal file
56
portable/Dockerfile
Normal file
@@ -0,0 +1,56 @@
|
||||
# Docker build arguments
|
||||
ARG DOTNET_VERSION=8.0
|
||||
ARG NODEJS_VERSION=20
|
||||
|
||||
ARG PTYPE=debian
|
||||
ARG PVERSION=12
|
||||
|
||||
FROM ${PTYPE}:${PVERSION}
|
||||
|
||||
ARG SOURCE_DIR=/jellyfin
|
||||
ARG ARTIFACT_DIR=/dist
|
||||
ARG DOTNET_VERSION
|
||||
ARG NODEJS_VERSION
|
||||
ARG PTYPE
|
||||
ARG PVERSION
|
||||
|
||||
# Docker run environment
|
||||
ENV SOURCE_DIR=/jellyfin
|
||||
ENV ARTIFACT_DIR=/dist
|
||||
ENV TYPE=${PTYPE}
|
||||
ENV VERSION=${PVERSION}
|
||||
ENV ARCHIVE_TYPES=tar
|
||||
|
||||
# Prepare Debian build environment
|
||||
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* \
|
||||
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 dotnet SDK
|
||||
RUN wget https://packages.microsoft.com/config/${PTYPE}/${PVERSION}/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
|
||||
&& dpkg -i packages-microsoft-prod.deb \
|
||||
&& apt-get -f install \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y dotnet-sdk-${DOTNET_VERSION}
|
||||
|
||||
# Prepare nodejs
|
||||
RUN wget https://deb.nodesource.com/setup_${NODEJS_VERSION}.x -O nodejs-install.sh \
|
||||
&& chmod +x ./nodejs-install.sh \
|
||||
&& ./nodejs-install.sh \
|
||||
&& apt-get install -y \
|
||||
nodejs
|
||||
|
||||
# Link to build script
|
||||
RUN ln -sf ${SOURCE_DIR}/portable/build.sh /build.sh
|
||||
|
||||
VOLUME ${SOURCE_DIR}/
|
||||
|
||||
VOLUME ${ARTIFACT_DIR}/
|
||||
|
||||
ENTRYPOINT ["/build.sh"]
|
||||
46
portable/build.sh
Executable file
46
portable/build.sh
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
#= Debian .deb builder
|
||||
|
||||
set -o errexit
|
||||
set -o xtrace
|
||||
|
||||
# Create the intermediate build dir
|
||||
BUILD_DIR="/build"
|
||||
mkdir -p ${BUILD_DIR}
|
||||
|
||||
# Move to source directory
|
||||
pushd "${SOURCE_DIR}"
|
||||
|
||||
# Build server
|
||||
pushd jellyfin-server
|
||||
dotnet publish Jellyfin.Server --configuration Release --output ${BUILD_DIR}/ -p:DebugSymbols=false -p:DebugType=none -p:UseAppHost=false
|
||||
popd
|
||||
|
||||
# Build web
|
||||
pushd jellyfin-web
|
||||
npm ci --no-audit --unsafe-perm
|
||||
npm run build:production
|
||||
mv dist ${BUILD_DIR}/jellyfin-web
|
||||
popd
|
||||
|
||||
mkdir -p "${ARTIFACT_DIR}/"
|
||||
|
||||
pushd ${BUILD_DIR}
|
||||
for ARCHIVE_TYPE in $( tr ',' '\n' <<<"${ARCHIVE_TYPES}" ); do
|
||||
case ${ARCHIVE_TYPE} in
|
||||
tar)
|
||||
tar -czf "${ARTIFACT_DIR}"/jellyfin_${JVERS}.tar.gz .
|
||||
;;
|
||||
zip)
|
||||
zip -qr "${ARTIFACT_DIR}"/jellyfin_${JVERS}.zip .
|
||||
;;
|
||||
esac
|
||||
done
|
||||
popd
|
||||
|
||||
# Clean up any lingering artifacts
|
||||
make -f debian/rules clean
|
||||
rm -rf ${BUILD_DIR}
|
||||
|
||||
popd
|
||||
Reference in New Issue
Block a user