From 0b75c804f28c44733788f2f2bb06c9de0da30586 Mon Sep 17 00:00:00 2001 From: Eric Nemchik Date: Thu, 25 May 2023 22:10:32 -0500 Subject: [PATCH 1/6] Rebase to Alpine 3.18, deprecate armhf Signed-off-by: Eric Nemchik --- .github/ISSUE_TEMPLATE/issue.bug.yml | 1 - Dockerfile | 14 +-- Dockerfile.aarch64 | 14 +-- Dockerfile.armhf | 123 --------------------------- Jenkinsfile | 78 ++++------------- README.md | 3 +- jenkins-vars.yml | 1 + readme-vars.yml | 2 +- 8 files changed, 35 insertions(+), 201 deletions(-) delete mode 100644 Dockerfile.armhf diff --git a/.github/ISSUE_TEMPLATE/issue.bug.yml b/.github/ISSUE_TEMPLATE/issue.bug.yml index 59a10f5..ce3d19a 100755 --- a/.github/ISSUE_TEMPLATE/issue.bug.yml +++ b/.github/ISSUE_TEMPLATE/issue.bug.yml @@ -53,7 +53,6 @@ body: options: - x86-64 - arm64 - - armhf validations: required: true - type: textarea diff --git a/Dockerfile b/Dockerfile index b2d0eec..aec660e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine:3.17 +FROM ghcr.io/linuxserver/baseimage-alpine:3.18 # set version label ARG BUILD_DATE @@ -11,7 +11,7 @@ LABEL maintainer="aptalca" RUN \ echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies --upgrade \ + apk add --no-cache --virtual=build-dependencies \ build-base \ cairo-dev \ cargo \ @@ -26,7 +26,7 @@ RUN \ openjpeg-dev \ python3-dev && \ echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ + apk add --no-cache \ chromaprint \ expat \ ffmpeg \ @@ -78,9 +78,9 @@ RUN \ tar xzf /tmp/mp3val-src/mp3val.tar.gz --strip 1 && \ make -f Makefile.linux && \ cp -p mp3val /usr/bin && \ - echo "**** install pip ****" && \ - python3 -m ensurepip && \ - pip3 install -U --no-cache-dir \ + echo "**** install pip packages ****" && \ + python3 -m venv /lsiopy && \ + pip install -U --no-cache-dir \ pip \ setuptools \ wheel && \ @@ -89,7 +89,7 @@ RUN \ python3 setup.py build && \ python3 setup.py install --prefix=/usr --root=/ && \ echo "**** install pip packages ****" && \ - pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \ + pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.18/ \ beautifulsoup4 \ beets-extrafiles \ beetcamp \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 9eb65b7..5247c5a 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17 +FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.18 # set version label ARG BUILD_DATE @@ -11,7 +11,7 @@ LABEL maintainer="aptalca" RUN \ echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies --upgrade \ + apk add --no-cache --virtual=build-dependencies \ build-base \ cairo-dev \ cargo \ @@ -26,7 +26,7 @@ RUN \ openjpeg-dev \ python3-dev && \ echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ + apk add --no-cache \ chromaprint \ expat \ ffmpeg \ @@ -78,9 +78,9 @@ RUN \ tar xzf /tmp/mp3val-src/mp3val.tar.gz --strip 1 && \ make -f Makefile.linux && \ cp -p mp3val /usr/bin && \ - echo "**** install pip ****" && \ - python3 -m ensurepip && \ - pip3 install -U --no-cache-dir \ + echo "**** install pip packages ****" && \ + python3 -m venv /lsiopy && \ + pip install -U --no-cache-dir \ pip \ setuptools \ wheel && \ @@ -89,7 +89,7 @@ RUN \ python3 setup.py build && \ python3 setup.py install --prefix=/usr --root=/ && \ echo "**** install pip packages ****" && \ - pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \ + pip install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.18/ \ beautifulsoup4 \ beets-extrafiles \ beetcamp \ diff --git a/Dockerfile.armhf b/Dockerfile.armhf deleted file mode 100644 index c818b27..0000000 --- a/Dockerfile.armhf +++ /dev/null @@ -1,123 +0,0 @@ -# syntax=docker/dockerfile:1 - -FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.17 - -# set version label -ARG BUILD_DATE -ARG VERSION -ARG BEETS_VERSION -LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="aptalca" - -RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies --upgrade \ - build-base \ - cairo-dev \ - cargo \ - cmake \ - ffmpeg-dev \ - fftw-dev \ - git \ - gobject-introspection-dev \ - jpeg-dev \ - libpng-dev \ - mpg123-dev \ - openjpeg-dev \ - python3-dev && \ - echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ - chromaprint \ - expat \ - ffmpeg \ - fftw \ - flac \ - gdbm \ - gobject-introspection \ - gst-plugins-good \ - gstreamer \ - jpeg \ - lame \ - libffi \ - libpng \ - mpg123 \ - nano \ - openjpeg \ - python3 \ - sqlite-libs && \ - echo "**** install beets ****" && \ - mkdir -p /tmp/beets && \ - if [ -z ${BEETS_VERSION+x} ] ; then \ - BEETS_VERSION=$(curl -sX GET "https://api.github.com/repos/beetbox/beets/commits/master" \ - | jq -r .sha); \ - fi && \ - curl -o \ - /tmp/beets.tar.gz -sL \ - "https://github.com/beetbox/beets/archive/${BEETS_VERSION}.tar.gz" && \ - tar xf \ - /tmp/beets.tar.gz -C \ - /tmp/beets --strip-components=1 && \ - echo "**** compile mp3gain ****" && \ - mkdir -p \ - /tmp/mp3gain-src && \ - curl -o \ - /tmp/mp3gain-src/mp3gain.zip -sL \ - https://sourceforge.net/projects/mp3gain/files/mp3gain/1.6.2/mp3gain-1_6_2-src.zip && \ - cd /tmp/mp3gain-src && \ - unzip -qq /tmp/mp3gain-src/mp3gain.zip && \ - sed -i "s#/usr/local/bin#/usr/bin#g" /tmp/mp3gain-src/Makefile && \ - make && \ - make install && \ - echo "**** compile mp3val ****" && \ - mkdir -p \ - /tmp/mp3val-src && \ - curl -o \ - /tmp/mp3val-src/mp3val.tar.gz -sL \ - https://downloads.sourceforge.net/mp3val/mp3val-0.1.8-src.tar.gz && \ - cd /tmp/mp3val-src && \ - tar xzf /tmp/mp3val-src/mp3val.tar.gz --strip 1 && \ - make -f Makefile.linux && \ - cp -p mp3val /usr/bin && \ - echo "**** install pip ****" && \ - python3 -m ensurepip && \ - pip3 install -U --no-cache-dir \ - pip \ - setuptools \ - wheel && \ - echo "**** install beets ****" && \ - cd /tmp/beets && \ - python3 setup.py build && \ - python3 setup.py install --prefix=/usr --root=/ && \ - echo "**** install pip packages ****" && \ - pip3 install -U --no-cache-dir --find-links https://wheel-index.linuxserver.io/alpine-3.17/ \ - beautifulsoup4 \ - beets-extrafiles \ - beetcamp \ - discogs-client \ - flask \ - PyGObject \ - pillow \ - pyacoustid \ - pylast \ - requests \ - requests_oauthlib \ - unidecode && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* \ - $HOME/.cache \ - $HOME/.cargo - -# environment settings -ENV BEETSDIR="/config" \ -EDITOR="nano" \ -HOME="/config" - -# copy local files -COPY root/ / - -# ports and volumes -EXPOSE 8337 -VOLUME /config diff --git a/Jenkinsfile b/Jenkinsfile index 0686ae2..0de239f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -173,7 +173,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } else { env.CI_TAGS = 'nightly-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } @@ -196,7 +196,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } else { env.CI_TAGS = 'nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } @@ -219,7 +219,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm32v7-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + env.CI_TAGS = 'amd64-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST } else { env.CI_TAGS = 'nightly-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST } @@ -525,44 +525,6 @@ pipeline { --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." } } - stage('Build ARMHF') { - agent { - label 'ARMHF' - } - steps { - echo "Running on node: ${NODE_NAME}" - echo 'Logging into Github' - sh '''#! /bin/bash - echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin - ''' - sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf" - sh "docker buildx build \ - --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ - --label \"org.opencontainers.image.authors=linuxserver.io\" \ - --label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-beets/packages\" \ - --label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-beets\" \ - --label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-beets\" \ - --label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ - --label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.vendor=linuxserver.io\" \ - --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ - --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.title=Beets\" \ - --label \"org.opencontainers.image.description=[Beets](http://beets.io/) is a music library manager and not, for the most part, a music player. It does include a simple player plugin and an experimental Web-based player, but it generally leaves actual sound-reproduction to specialized tools.\" \ - --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \ - --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." - sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - retry(5) { - sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - } - sh '''#! /bin/bash - containers=$(docker ps -aq) - if [[ -n "${containers}" ]]; then - docker stop ${containers} - fi - docker system prune -af --volumes || : ''' - } - } stage('Build ARM64') { agent { label 'ARM64' @@ -703,9 +665,7 @@ pipeline { set -e docker pull ghcr.io/linuxserver/ci:latest if [ "${MULTIARCH}" == "true" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi docker run --rm \ @@ -808,8 +768,6 @@ pipeline { echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin if [ "${CI}" == "false" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi @@ -817,49 +775,47 @@ pipeline { docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-nightly docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} - docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-nightly - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-nightly docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:amd64-nightly - docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker push ${MANIFESTIMAGE}:arm32v7-nightly - docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-nightly docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker push ${MANIFESTIMAGE}:amd64-${SEMVER} - docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker manifest push --purge ${MANIFESTIMAGE}:nightly || : - docker manifest create ${MANIFESTIMAGE}:nightly ${MANIFESTIMAGE}:amd64-nightly ${MANIFESTIMAGE}:arm32v7-nightly ${MANIFESTIMAGE}:arm64v8-nightly - docker manifest annotate ${MANIFESTIMAGE}:nightly ${MANIFESTIMAGE}:arm32v7-nightly --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:nightly ${MANIFESTIMAGE}:amd64-nightly ${MANIFESTIMAGE}:arm64v8-nightly docker manifest annotate ${MANIFESTIMAGE}:nightly ${MANIFESTIMAGE}:arm64v8-nightly --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 if [ -n "${SEMVER}" ]; then docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : - docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} - docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 fi + token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token') + digest=$(curl -s \ + --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ + --header "Authorization: Bearer ${token}" \ + "https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-nightly") + if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-nightly || : + docker manifest create ${MANIFESTIMAGE}:arm32v7-nightly ${MANIFESTIMAGE}:amd64-nightly + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-nightly + fi docker manifest push --purge ${MANIFESTIMAGE}:nightly docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} diff --git a/README.md b/README.md index 784cfe7..f26b806 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ The architectures supported by this image are: | :----: | :----: | ---- | | x86-64 | ✅ | amd64-\ | | arm64 | ✅ | arm64v8-\ | -| armhf | ✅ | arm32v7-\ | +| armhf | ❌ | | ## Usage @@ -224,6 +224,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf. * **25.03.23:** - Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html). * **24.12.22:** - Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin. * **15.01.22:** - Rebase to Alpine 3.15. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 5845691..815edb1 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -6,6 +6,7 @@ external_type: github_commit release_type: prerelease release_tag: nightly ls_branch: nightly +build_armhf: false repo_vars: - BUILD_VERSION_ARG = 'BEETS_VERSION' - EXT_GIT_BRANCH = 'master' diff --git a/readme-vars.yml b/readme-vars.yml index 6b781c9..50236f3 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -14,7 +14,6 @@ project_blurb_optional_extras: [] available_architectures: - { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - - { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"} # container parameters common_param_env_vars_enabled: true #PGID, PUID, etc, you can set it to 'optional' @@ -33,6 +32,7 @@ param_ports: # changelog changelogs: + - { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } - { date: "25.03.23:", desc: "Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html)." } - { date: "24.12.22:", desc: "Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin." } - { date: "15.01.22:", desc: "Rebase to Alpine 3.15." } From 18edeb7159bce2312239e59203dfe75f6d9c72c8 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Mon, 21 Aug 2023 14:13:12 +0100 Subject: [PATCH 2/6] Pin Pillow to 9.5.0 --- Dockerfile | 2 +- Dockerfile.aarch64 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index aec660e..baeffff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -96,7 +96,7 @@ RUN \ discogs-client \ flask \ PyGObject \ - pillow \ + Pillow==9.5.0 \ pyacoustid \ pylast \ requests \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 5247c5a..3a16ef3 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -96,7 +96,7 @@ RUN \ discogs-client \ flask \ PyGObject \ - pillow \ + Pillow==9.5.0 \ pyacoustid \ pylast \ requests \ From 7c0575aa18c055ee6adc6b223ef81d1cea56559a Mon Sep 17 00:00:00 2001 From: TheSpad Date: Mon, 21 Aug 2023 14:13:58 +0100 Subject: [PATCH 3/6] Update changelog date --- readme-vars.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme-vars.yml b/readme-vars.yml index 50236f3..b02a773 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -32,7 +32,7 @@ param_ports: # changelog changelogs: - - { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } + - { date: "25.08.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } - { date: "25.03.23:", desc: "Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html)." } - { date: "24.12.22:", desc: "Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin." } - { date: "15.01.22:", desc: "Rebase to Alpine 3.15." } From 8d9d4e2d6950bafa5d813e5aaa3366f93c93bbeb Mon Sep 17 00:00:00 2001 From: TheSpad Date: Mon, 21 Aug 2023 14:15:36 +0100 Subject: [PATCH 4/6] Fix changelog text --- readme-vars.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme-vars.yml b/readme-vars.yml index b02a773..c7f3307 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -32,7 +32,7 @@ param_ports: # changelog changelogs: - - { date: "25.08.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } + - { date: "25.08.23:", desc: "Rebase to Alpine 3.18, pin Pillow to 9.5.0." } - { date: "25.03.23:", desc: "Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html)." } - { date: "24.12.22:", desc: "Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin." } - { date: "15.01.22:", desc: "Rebase to Alpine 3.15." } From 72ba0cc05b57b66d306e6d87673bba48080089fc Mon Sep 17 00:00:00 2001 From: TheSpad Date: Mon, 21 Aug 2023 14:18:46 +0100 Subject: [PATCH 5/6] Rebuild readme --- README.md | 1 + readme-vars.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 98ccb26..d05f41d 100644 --- a/README.md +++ b/README.md @@ -224,6 +224,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **25.08.23:** - Rebase to Alpine 3.18, pin Pillow to 9.5.0. * **03.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf) * **25.03.23:** - Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html). * **24.12.22:** - Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin. diff --git a/readme-vars.yml b/readme-vars.yml index 570d684..bfee208 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -28,6 +28,7 @@ param_ports: - {external_port: "8337", internal_port: "8337", port_desc: "Application WebUI"} # changelog changelogs: + - {date: "25.08.23:", desc: "Rebase to Alpine 3.18, pin Pillow to 9.5.0."} - {date: "03.07.23:", desc: "Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)"} - {date: "25.03.23:", desc: "Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html)."} - {date: "24.12.22:", desc: "Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin."} From e30bd93894552854a35b0f8164f512fd63219782 Mon Sep 17 00:00:00 2001 From: TheSpad Date: Mon, 21 Aug 2023 14:54:08 +0100 Subject: [PATCH 6/6] Use imagemagick instead of Pillow --- Dockerfile | 2 +- Dockerfile.aarch64 | 2 +- README.md | 2 +- readme-vars.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index baeffff..3afbcc3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,6 +36,7 @@ RUN \ gobject-introspection \ gst-plugins-good \ gstreamer \ + imagemagick \ jpeg \ lame \ libffi \ @@ -96,7 +97,6 @@ RUN \ discogs-client \ flask \ PyGObject \ - Pillow==9.5.0 \ pyacoustid \ pylast \ requests \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 3a16ef3..4bb51af 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -36,6 +36,7 @@ RUN \ gobject-introspection \ gst-plugins-good \ gstreamer \ + imagemagick \ jpeg \ lame \ libffi \ @@ -96,7 +97,6 @@ RUN \ discogs-client \ flask \ PyGObject \ - Pillow==9.5.0 \ pyacoustid \ pylast \ requests \ diff --git a/README.md b/README.md index d05f41d..890dd03 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions -* **25.08.23:** - Rebase to Alpine 3.18, pin Pillow to 9.5.0. +* **25.08.23:** - Rebase to Alpine 3.18, switch from Pillow to Imagemagick. * **03.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf) * **25.03.23:** - Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html). * **24.12.22:** - Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin. diff --git a/readme-vars.yml b/readme-vars.yml index bfee208..889c7d6 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -28,7 +28,7 @@ param_ports: - {external_port: "8337", internal_port: "8337", port_desc: "Application WebUI"} # changelog changelogs: - - {date: "25.08.23:", desc: "Rebase to Alpine 3.18, pin Pillow to 9.5.0."} + - {date: "25.08.23:", desc: "Rebase to Alpine 3.18, switch from Pillow to Imagemagick."} - {date: "03.07.23:", desc: "Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)"} - {date: "25.03.23:", desc: "Add requests_oauthlib required for [beatport plugin](https://beets.readthedocs.io/en/stable/plugins/beatport.html)."} - {date: "24.12.22:", desc: "Rebase to Alpine 3.17, migrate to s6v3, install chromaprint from Alpine repos, add beetcamp plugin."}