diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index 1a67b15..9c6e576 100755 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -18,7 +18,7 @@ jobs: fi echo "**** External trigger running off of develop branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_SONARR_DEVELOP\". ****" echo "**** Retrieving external version ****" - EXT_RELEASE=$(curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.branch=="develop") | .version') + EXT_RELEASE=$(curl -sX GET http://services.sonarr.tv/v1/releases | jq -r 'first(.[] | select(.branch=="develop") | .version')) if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then echo "**** Can't retrieve external version, exiting ****" FAILURE_REASON="Can't retrieve external version for sonarr branch develop" diff --git a/Dockerfile b/Dockerfile index 207e72b..6dd56e8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/linuxserver/baseimage-mono:focal +FROM ghcr.io/linuxserver/baseimage-alpine:3.16 # set version label ARG BUILD_DATE @@ -8,69 +8,36 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA LABEL maintainer="thespad" # set environment variables -ARG DEBIAN_FRONTEND="noninteractive" ENV XDG_CONFIG_HOME="/config/xdg" ENV SONARR_BRANCH="develop" RUN \ - echo "**** add mediaarea repository ****" && \ - curl -L \ - "https://mediaarea.net/repo/deb/repo-mediaarea_1.0-12_all.deb" \ - -o /tmp/key.deb && \ - dpkg -i /tmp/key.deb && \ - echo "deb https://mediaarea.net/repo/deb/ubuntu focal main" | tee /etc/apt/sources.list.d/mediaarea.list && \ echo "**** install packages ****" && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - curl \ - jq \ - mediainfo \ - libmono-system-net-http4.0-cil \ - libmono-corlib4.5-cil \ - libmono-microsoft-csharp4.0-cil \ - libmono-posix4.0-cil \ - libmono-system-componentmodel-dataannotations4.0-cil \ - libmono-system-configuration-install4.0-cil \ - libmono-system-configuration4.0-cil \ - libmono-system-core4.0-cil \ - libmono-system-data-datasetextensions4.0-cil \ - libmono-system-data4.0-cil \ - libmono-system-identitymodel4.0-cil \ - libmono-system-io-compression4.0-cil \ - libmono-system-numerics4.0-cil \ - libmono-system-runtime-serialization4.0-cil \ - libmono-system-security4.0-cil \ - libmono-system-servicemodel4.0a-cil \ - libmono-system-serviceprocess4.0-cil \ - libmono-system-transactions4.0-cil \ - libmono-system-web4.0-cil \ - libmono-system-xml-linq4.0-cil \ - libmono-system-xml4.0-cil \ - libmono-system4.0-cil && \ + apk add -U --upgrade --no-cache \ + icu-libs \ + sqlite-libs && \ echo "**** install sonarr ****" && \ mkdir -p /app/sonarr/bin && \ if [ -z ${SONARR_VERSION+x} ]; then \ SONARR_VERSION=$(curl -sX GET http://services.sonarr.tv/v1/releases \ - | jq -r ".[] | select(.branch==\"$SONARR_BRANCH\") | .version"); \ + | jq -r "first(.[] | select(.branch==\"$SONARR_BRANCH\") | .version)"); \ fi && \ curl -o \ /tmp/sonarr.tar.gz -L \ - "https://download.sonarr.tv/v3/${SONARR_BRANCH}/${SONARR_VERSION}/Sonarr.${SONARR_BRANCH}.${SONARR_VERSION}.linux.tar.gz" && \ + "https://download.sonarr.tv/v4/${SONARR_BRANCH}/${SONARR_VERSION}/Sonarr.${SONARR_BRANCH}.${SONARR_VERSION}.linux-musl-x64.tar.gz" && \ tar xzf \ /tmp/sonarr.tar.gz -C \ /app/sonarr/bin --strip-components=1 && \ - echo "UpdateMethod=docker\nBranch=${SONARR_BRANCH}\nPackageVersion=${VERSION}\nPackageAuthor=[linuxserver.io](https://www.linuxserver.io/)" > /app/sonarr/package_info && \ - rm -rf /app/sonarr/bin/Sonarr.Update && \ + echo -e "UpdateMethod=docker\nBranch=${sonarr_BRANCH}\nPackageVersion=${VERSION}\nPackageAuthor=[linuxserver.io](https://linuxserver.io)\nPackageGlobalMessage=Warn: This image is now based on Alpine. Custom scripts using apt-get will need to be updated to use apk" > /app/sonarr/package_info && \ echo "**** cleanup ****" && \ - apt-get clean && \ rm -rf \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* + /app/sonarr/bin/Sonarr.Update \ + /tmp/* # add local files COPY root/ / # ports and volumes EXPOSE 8989 + VOLUME /config diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 13f5e51..25ab257 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,4 +1,4 @@ -FROM ghcr.io/linuxserver/baseimage-mono:arm64v8-focal +FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.16 # set version label ARG BUILD_DATE @@ -8,69 +8,36 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA LABEL maintainer="thespad" # set environment variables -ARG DEBIAN_FRONTEND="noninteractive" ENV XDG_CONFIG_HOME="/config/xdg" ENV SONARR_BRANCH="develop" RUN \ - echo "**** add mediaarea repository ****" && \ - curl -L \ - "https://mediaarea.net/repo/deb/repo-mediaarea_1.0-12_all.deb" \ - -o /tmp/key.deb && \ - dpkg -i /tmp/key.deb && \ - echo "deb https://mediaarea.net/repo/deb/ubuntu focal main" | tee /etc/apt/sources.list.d/mediaarea.list && \ echo "**** install packages ****" && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - curl \ - jq \ - mediainfo \ - libmono-system-net-http4.0-cil \ - libmono-corlib4.5-cil \ - libmono-microsoft-csharp4.0-cil \ - libmono-posix4.0-cil \ - libmono-system-componentmodel-dataannotations4.0-cil \ - libmono-system-configuration-install4.0-cil \ - libmono-system-configuration4.0-cil \ - libmono-system-core4.0-cil \ - libmono-system-data-datasetextensions4.0-cil \ - libmono-system-data4.0-cil \ - libmono-system-identitymodel4.0-cil \ - libmono-system-io-compression4.0-cil \ - libmono-system-numerics4.0-cil \ - libmono-system-runtime-serialization4.0-cil \ - libmono-system-security4.0-cil \ - libmono-system-servicemodel4.0a-cil \ - libmono-system-serviceprocess4.0-cil \ - libmono-system-transactions4.0-cil \ - libmono-system-web4.0-cil \ - libmono-system-xml-linq4.0-cil \ - libmono-system-xml4.0-cil \ - libmono-system4.0-cil && \ + apk add -U --upgrade --no-cache \ + icu-libs \ + sqlite-libs && \ echo "**** install sonarr ****" && \ mkdir -p /app/sonarr/bin && \ if [ -z ${SONARR_VERSION+x} ]; then \ SONARR_VERSION=$(curl -sX GET http://services.sonarr.tv/v1/releases \ - | jq -r ".[] | select(.branch==\"$SONARR_BRANCH\") | .version"); \ + | jq -r "first(.[] | select(.branch==\"$SONARR_BRANCH\") | .version)"); \ fi && \ curl -o \ /tmp/sonarr.tar.gz -L \ - "https://download.sonarr.tv/v3/${SONARR_BRANCH}/${SONARR_VERSION}/Sonarr.${SONARR_BRANCH}.${SONARR_VERSION}.linux.tar.gz" && \ + "https://download.sonarr.tv/v4/${SONARR_BRANCH}/${SONARR_VERSION}/Sonarr.${SONARR_BRANCH}.${SONARR_VERSION}.linux-musl-arm64.tar.gz" && \ tar xzf \ /tmp/sonarr.tar.gz -C \ /app/sonarr/bin --strip-components=1 && \ - echo "UpdateMethod=docker\nBranch=${SONARR_BRANCH}\nPackageVersion=${VERSION}\nPackageAuthor=[linuxserver.io](https://www.linuxserver.io/)" > /app/sonarr/package_info && \ - rm -rf /app/sonarr/bin/Sonarr.Update && \ + echo -e "UpdateMethod=docker\nBranch=${sonarr_BRANCH}\nPackageVersion=${VERSION}\nPackageAuthor=[linuxserver.io](https://linuxserver.io)\nPackageGlobalMessage=Warn: This image is now based on Alpine. Custom scripts using apt-get will need to be updated to use apk" > /app/sonarr/package_info && \ echo "**** cleanup ****" && \ - apt-get clean && \ rm -rf \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* + /app/sonarr/bin/Sonarr.Update \ + /tmp/* # add local files COPY root/ / # ports and volumes EXPOSE 8989 + VOLUME /config diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 4e5b280..48c03e1 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,4 +1,4 @@ -FROM ghcr.io/linuxserver/baseimage-mono:arm32v7-focal-3d8375bc-ls75 +FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.16 # set version label ARG BUILD_DATE @@ -7,45 +7,10 @@ ARG SONARR_VERSION LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="thespad" -# set environment variables -ARG DEBIAN_FRONTEND="noninteractive" -ENV XDG_CONFIG_HOME="/config/xdg" -ENV SONARR_BRANCH="develop" - -RUN \ - echo "**** add mediaarea repository ****" && \ - curl -L \ - "https://mediaarea.net/repo/deb/repo-mediaarea_1.0-12_all.deb" \ - -o /tmp/key.deb && \ - dpkg -i /tmp/key.deb && \ - echo "deb https://mediaarea.net/repo/deb/ubuntu focal main" | tee /etc/apt/sources.list.d/mediaarea.list && \ - echo "**** install packages ****" && \ - apt-get update && \ - apt-get install -y --no-install-recommends \ - curl \ - jq \ - mediainfo && \ - echo "**** install sonarr ****" && \ - mkdir -p /app/sonarr/bin && \ - SONARR_VERSION="3.0.8.1548" && \ - curl -o \ - /tmp/sonarr.tar.gz -L \ - "https://download.sonarr.tv/v3/${SONARR_BRANCH}/${SONARR_VERSION}/Sonarr.${SONARR_BRANCH}.${SONARR_VERSION}.linux.tar.gz" && \ - tar xzf \ - /tmp/sonarr.tar.gz -C \ - /app/sonarr/bin --strip-components=1 && \ - echo "UpdateMethod=docker\nBranch=${SONARR_BRANCH}\nPackageVersion=${VERSION}\nPackageAuthor=[linuxserver.io](https://www.linuxserver.io/)\nPackageGlobalMessage=Warn: Due to issues with Mono packages this container is no longer supported for 32-bit arm (armhf) platforms. See https://info.linuxserver.io for more info." > /app/sonarr/package_info && \ - rm -rf /app/sonarr/bin/Sonarr.Update && \ - echo "**** cleanup ****" && \ - apt-get clean && \ - rm -rf \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* - # add local files -COPY root/ / +COPY root-armhf/ / # ports and volumes EXPOSE 8989 -VOLUME /config + +VOLUME /config \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index 2902cd0..739bca3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,16 +24,16 @@ pipeline { DOCKERHUB_IMAGE = 'linuxserver/sonarr' DEV_DOCKERHUB_IMAGE = 'lsiodev/sonarr' PR_DOCKERHUB_IMAGE = 'lspipepr/sonarr' - DIST_IMAGE = 'ubuntu' + DIST_IMAGE = 'alpine' MULTIARCH='true' CI='true' CI_WEB='true' CI_PORT='8989' CI_SSL='false' CI_DELAY='120' - CI_DOCKERENV='TZ=US/Pacific|ISCI=true' + CI_DOCKERENV='TZ=US/Pacific' CI_AUTH='user:password' - CI_WEBPATH='' + CI_WEBPATH='/system/status' } stages { // Setup all the basic environment variables needed for the build @@ -104,7 +104,7 @@ pipeline { steps{ script{ env.EXT_RELEASE = sh( - script: ''' curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.branch=="develop") | .version' ''', + script: ''' curl -sX GET http://services.sonarr.tv/v1/releases | jq -r 'first(.[] | select(.branch=="develop") | .version') ''', returnStdout: true).trim() env.RELEASE_LINK = 'custom_command' } diff --git a/README.md b/README.md index 77e9c3e..e74e2ba 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ This image provides various versions that are available via tags. Please read th | Tag | Available | Description | | :----: | :----: |--- | | latest | ✅ | Stable releases from Sonarr (currently v3) | -| develop | ✅ | Development releases from Sonarr (currently v3) | +| develop | ✅ | Development releases from Sonarr (currently v4) | ## Application Setup @@ -236,6 +236,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **24.11.22:** - Bump develop branch to v4. * **03.08.22:** - Deprecate armhf. * **02.08.22:** - Rebase develop branch to Ubuntu Focal due to dropping of mono support on Alpine. * **20.02.22:** - Rebase develop branch to Alpine. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 0bc0248..a961e04 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -3,7 +3,7 @@ # jenkins variables project_name: docker-sonarr external_type: na -custom_version_command: "curl -sX GET http://services.sonarr.tv/v1/releases | jq -r '.[] | select(.branch==\"develop\") | .version'" +custom_version_command: "curl -sX GET http://services.sonarr.tv/v1/releases | jq -r 'first(.[] | select(.branch==\"develop\") | .version')" release_type: prerelease release_tag: develop ls_branch: develop @@ -15,15 +15,15 @@ repo_vars: - DOCKERHUB_IMAGE = 'linuxserver/sonarr' - DEV_DOCKERHUB_IMAGE = 'lsiodev/sonarr' - PR_DOCKERHUB_IMAGE = 'lspipepr/sonarr' - - DIST_IMAGE = 'ubuntu' + - DIST_IMAGE = 'alpine' - MULTIARCH='true' - CI='true' - CI_WEB='true' - CI_PORT='8989' - CI_SSL='false' - CI_DELAY='120' - - CI_DOCKERENV='TZ=US/Pacific|ISCI=true' + - CI_DOCKERENV='TZ=US/Pacific' - CI_AUTH='user:password' - - CI_WEBPATH='' + - CI_WEBPATH='/system/status' sponsor_links: - { name: "Sonarr", url: "https://sonarr.tv/donate" } diff --git a/readme-vars.yml b/readme-vars.yml index 442f8dd..e3df24a 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -17,7 +17,7 @@ available_architectures: development_versions: true development_versions_items: - { tag: "latest", desc: "Stable releases from Sonarr (currently v3)" } - - { tag: "develop", desc: "Development releases from Sonarr (currently v3)" } + - { tag: "develop", desc: "Development releases from Sonarr (currently v4)" } # container parameters param_container_name: "{{ project_name }}" @@ -43,6 +43,7 @@ app_setup_block: | # changelog changelogs: + - { date: "24.11.22:", desc: "Bump develop branch to v4, rebase to Alpine." } - { date: "03.08.22:", desc: "Deprecate armhf." } - { date: "02.08.22:", desc: "Rebase develop branch to Ubuntu Focal due to dropping of mono support on Alpine." } - { date: "20.02.22:", desc: "Rebase develop branch to Alpine." } diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/dependencies.d/legacy-services b/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/dependencies.d/legacy-services new file mode 100644 index 0000000..e69de29 diff --git a/root-armhf/etc/cont-init.d/50-armless b/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/run old mode 100644 new mode 100755 similarity index 81% rename from root-armhf/etc/cont-init.d/50-armless rename to root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/run index 31e79d6..e751e59 --- a/root-armhf/etc/cont-init.d/50-armless +++ b/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/run @@ -5,8 +5,8 @@ cat <<-EOF ******************************************************** * * * !!!! * - * This image no longers supports * - * 32 bit ARM due to a lack of upstream packages * + * This Sonarr image does not support * + * 32 bit ARM due to lack of available OS packages * * * * * ******************************************************** diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/type b/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/up b/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/up new file mode 100644 index 0000000..b2b0bd0 --- /dev/null +++ b/root-armhf/etc/s6-overlay/s6-rc.d/init-sonarr-config/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-sonarr-config/run \ No newline at end of file diff --git a/root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-sonarr-config b/root-armhf/etc/s6-overlay/s6-rc.d/user2/contents.d/init-sonarr-config new file mode 100644 index 0000000..e69de29 diff --git a/root-armhf/etc/services.d/armless/run b/root-armhf/etc/services.d/armless/run deleted file mode 100755 index 647da28..0000000 --- a/root-armhf/etc/services.d/armless/run +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/with-contenv bash - -if [[ -n $ISCI ]]; then - sleep 180 -fi - -exec \ - s6-svscanctl -t /run/service/ diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config deleted file mode 100644 index 9010fc3..0000000 --- a/root/etc/cont-init.d/30-config +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/with-contenv bash - -# cleanup pid if it exists -[[ -e /config/sonarr.pid ]] && \ - rm -rf /config/sonarr.pid - -# permissions -chown -R abc:abc \ - /app/sonarr/bin diff --git a/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-sonarr-config b/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-sonarr-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/dependencies.d/init-config b/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/dependencies.d/init-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/run b/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/run new file mode 100755 index 0000000..aa3208d --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/run @@ -0,0 +1,5 @@ +#!/usr/bin/with-contenv bash + +# permissions +chown -R abc:abc \ + /config diff --git a/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/type b/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/up b/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/up new file mode 100644 index 0000000..b2b0bd0 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-sonarr-config/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-sonarr-config/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/svc-sonarr/dependencies.d/init-services b/root/etc/s6-overlay/s6-rc.d/svc-sonarr/dependencies.d/init-services new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/svc-sonarr/notification-fd b/root/etc/s6-overlay/s6-rc.d/svc-sonarr/notification-fd new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-sonarr/notification-fd @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/svc-sonarr/run b/root/etc/s6-overlay/s6-rc.d/svc-sonarr/run new file mode 100755 index 0000000..f3dce0f --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-sonarr/run @@ -0,0 +1,6 @@ +#!/usr/bin/with-contenv bash + +exec \ + s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost 8989" \ + cd /app/sonarr/bin s6-setuidgid abc /app/sonarr/bin/Sonarr \ + -nobrowser -data=/config diff --git a/root/etc/s6-overlay/s6-rc.d/svc-sonarr/type b/root/etc/s6-overlay/s6-rc.d/svc-sonarr/type new file mode 100644 index 0000000..1780f9f --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-sonarr/type @@ -0,0 +1 @@ +longrun \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-sonarr-config b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-sonarr-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-sonarr b/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-sonarr new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/services.d/sonarr/run b/root/etc/services.d/sonarr/run deleted file mode 100755 index 00a0285..0000000 --- a/root/etc/services.d/sonarr/run +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/with-contenv bash - -cd /app/sonarr/bin || exit - -exec \ - s6-setuidgid abc mono --debug Sonarr.exe \ - -nobrowser -data=/config