Explorar o código

Fixed fedora rpm build unexpected dependency on liblttng-ust. Fixed the docker builds and added manifest generation.

Erwin de Haan %!s(int64=6) %!d(string=hai) anos
pai
achega
4b00b0cc87

+ 4 - 4
deployment/common.build.sh

@@ -46,13 +46,13 @@ build_jellyfin_docker()
     DOCKERFILE=${2-$DEFAULT_DOCKERFILE}
     IMAGE_TAG=${3-$DEFAULT_IMAGE_TAG}
 
-    echo -e "${CYAN}Building jellyfin docker image in '${ROOT}' with Dockerfile ${CONFIG} and tag '${IMAGE_TAG}'.${NC}"
-    docker build -t ${IMAGE_TAG} -f ${DOCKERFILE} ${ROOT}
+    echo -e "${CYAN}Building jellyfin docker image in '${BUILD_CONTEXT}' with Dockerfile '${DOCKERFILE}' and tag '${IMAGE_TAG}'.${NC}"
+    docker build -t ${IMAGE_TAG} -f ${DOCKERFILE} ${BUILD_CONTEXT}
     EXIT_CODE=$?
     if [ $EXIT_CODE -eq 0 ]; then
-        echo -e "${GREEN}[DONE] Building jellyfin docker image in '${ROOT}' with Dockerfile ${CONFIG} and tag '${IMAGE_TAG}' complete.${NC}"
+        echo -e "${GREEN}[DONE] Building jellyfin docker image in '${BUILD_CONTEXT}' with Dockerfile '${DOCKERFILE}' and tag '${IMAGE_TAG}' complete.${NC}"
     else
-        echo -e "${RED}[FAIL] Building jellyfin docker image in '${ROOT}' with Dockerfile ${CONFIG} and tag '${IMAGE_TAG}' FAILED.${NC}"
+        echo -e "${RED}[FAIL] Building jellyfin docker image in '${BUILD_CONTEXT}' with Dockerfile '${DOCKERFILE}' and tag '${IMAGE_TAG}' FAILED.${NC}"
     fi    
 )
 

+ 2 - 2
deployment/docker/Dockerfile → deployment/docker/Dockerfile.amd64

@@ -23,6 +23,6 @@ COPY --from=builder /jellyfin /jellyfin
 COPY --from=ffmpeg /ffmpeg-bin/* /usr/bin/
 EXPOSE 8096
 VOLUME /config /media
-RUN apt update \
- && apt install -y libfontconfig1 --no-install-recommends  # needed for Skia
+RUN apt-get update \
+ && apt-get install -y libfontconfig1 --no-install-recommends  # needed for Skia
 ENTRYPOINT dotnet /jellyfin/jellyfin.dll -programdata /config

+ 3 - 3
deployment/docker/Dockerfile.aarch64 → deployment/docker/Dockerfile.arm32v7

@@ -8,10 +8,10 @@ RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \
  && dotnet clean \
  && dotnet publish --configuration release --output /jellyfin Jellyfin.Server
 
-FROM microsoft/dotnet:${DOTNET_VERSION}-runtime
+FROM microsoft/dotnet:${DOTNET_VERSION}-runtime-stretch-slim-arm32v7
 COPY --from=builder /jellyfin /jellyfin
 EXPOSE 8096
-RUN apt update \
- && apt install -y ffmpeg
+RUN apt-get update \
+ && apt-get install -y ffmpeg
 VOLUME /config /media
 ENTRYPOINT dotnet /jellyfin/jellyfin.dll -programdata /config

+ 17 - 0
deployment/docker/Dockerfile.arm64v8

@@ -0,0 +1,17 @@
+ARG DOTNET_VERSION=3.0
+
+FROM microsoft/dotnet:${DOTNET_VERSION}-sdk as builder
+WORKDIR /repo
+COPY . .
+RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \
+ && find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \; \
+ && dotnet clean \
+ && dotnet publish --configuration release --output /jellyfin Jellyfin.Server
+
+FROM microsoft/dotnet:${DOTNET_VERSION}-runtime-stretch-slim-arm64v8
+COPY --from=builder /jellyfin /jellyfin
+EXPOSE 8096
+RUN apt-get update \
+ && apt-get install -y ffmpeg
+VOLUME /config /media
+ENTRYPOINT dotnet /jellyfin/jellyfin.dll -programdata /config

+ 7 - 1
deployment/docker/build.sh

@@ -4,4 +4,10 @@ source ../common.build.sh
 
 VERSION=`get_version ../..`
 
-build_jellyfin_docker ../.. Dockerfile jellyfin:${VERSION}
+build_jellyfin_docker ../.. Dockerfile.amd64 jellyfin:amd64-${VERSION}
+
+build_jellyfin_docker ../.. Dockerfile.arm64v8 jellyfin:arm64v8-${VERSION} arm64v8
+
+build_jellyfin_docker ../.. Dockerfile.arm32v7 jellyfin:arm32v7-${VERSION} arm32v7
+
+

+ 12 - 0
deployment/docker/package.sh

@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+source ../common.build.sh
+
+VERSION=`get_version ../..`
+
+docker manifest create jellyfin:${VERSION} jellyfin:amd64-${VERSION} jellyfin:arm32v7-${VERSION} jellyfin:arm64v8-${VERSION}
+docker manifest annotate jellyfin:amd64-${VERSION} --os linux --arch amd64
+docker manifest annotate jellyfin:arm32v7-${VERSION} --os linux --arch arm --variant armv7
+docker manifest annotate jellyfin:arm64v8-${VERSION} --os linux --arch arm64 --variant armv8
+
+#TODO publish.sh - docker manifest push jellyfin:${VERSION}

+ 1 - 0
deployment/fedora-package-x64/pkg-src/jellyfin.spec

@@ -5,6 +5,7 @@
 %global         taglib_commit ee5ab21742b71fd1b87ee24895582327e9e04776
 %global         taglib_shortcommit %(c=%{taglib_commit}; echo ${c:0:7})
 
+AutoReq:        no
 Name:           jellyfin
 Version:        10.0.1
 Release:        1%{?dist}