From 98cf4a44c998638eaa399842e7df13d974eafde4 Mon Sep 17 00:00:00 2001 From: Eric Nemchik Date: Thu, 25 May 2023 22:11:37 -0500 Subject: [PATCH] Rebase to Alpine 3.18, deprecate armhf --- .github/ISSUE_TEMPLATE/issue.bug.yml | 1 - Dockerfile | 76 ++++++++++----------- Dockerfile.aarch64 | 76 ++++++++++----------- Dockerfile.armhf | 99 ---------------------------- Jenkinsfile | 78 +++++----------------- README.md | 3 +- jenkins-vars.yml | 1 + readme-vars.yml | 2 +- 8 files changed, 91 insertions(+), 245 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 567b1d9..0fbc589 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.17 +FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.18 # set version label ARG BUILD_DATE @@ -14,49 +14,43 @@ ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so" RUN \ echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ + apk add --no-cache \ ffmpeg \ gnu-libiconv \ imagemagick \ libxml2 \ - php81-apcu \ - php81-bcmath \ - php81-bz2 \ - php81-ctype \ - php81-curl \ - php81-dom \ - php81-exif \ - php81-ftp \ - php81-gd \ - php81-gmp \ - php81-iconv \ - php81-imap \ - php81-intl \ - php81-ldap \ - php81-opcache \ - php81-pcntl \ - php81-pdo_mysql \ - php81-pdo_pgsql \ - php81-pdo_sqlite \ - php81-pecl-imagick \ - php81-pecl-memcached \ - php81-pgsql \ - php81-phar \ - php81-posix \ - php81-redis \ - php81-sodium \ - php81-sqlite3 \ - php81-sysvsem \ - php81-xmlreader \ - php81-zip \ + php82-apcu \ + php82-bcmath \ + php82-bz2 \ + php82-dom \ + php82-exif \ + php82-ftp \ + php82-gd \ + php82-gmp \ + php82-imap \ + php82-intl \ + php82-ldap \ + php82-opcache \ + php82-pcntl \ + php82-pdo_mysql \ + php82-pdo_pgsql \ + php82-pdo_sqlite \ + php82-pecl-imagick \ + php82-pecl-memcached \ + php82-pecl-smbclient \ + php82-pgsql \ + php82-posix \ + php82-redis \ + php82-sodium \ + php82-sqlite3 \ + php82-sysvsem \ + php82-xmlreader \ samba-client \ sudo && \ - apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ - php81-pecl-smbclient && \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - php81-pecl-mcrypt && \ + php82-pecl-mcrypt && \ echo "**** configure php and nginx for nextcloud ****" && \ - echo 'apc.enable_cli=1' >> /etc/php81/conf.d/apcu.ini && \ + echo 'apc.enable_cli=1' >> /etc/php82/conf.d/apcu.ini && \ sed -i \ -e 's/;opcache.enable.*=.*/opcache.enable=1/g' \ -e 's/;opcache.interned_strings_buffer.*=.*/opcache.interned_strings_buffer=16/g' \ @@ -70,11 +64,11 @@ RUN \ -e 's/upload_max_filesize.*=.*2M/upload_max_filesize=1024M/g' \ -e 's/post_max_size.*=.*8M/post_max_size=1024M/g' \ -e 's/output_buffering.*=.*/output_buffering=0/g' \ - /etc/php81/php.ini && \ + /etc/php82/php.ini && \ sed -i \ '/opcache.enable=1/a opcache.enable_cli=1' \ - /etc/php81/php.ini && \ - echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php81/php-fpm.conf && \ + /etc/php82/php.ini && \ + echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php82/php-fpm.conf && \ echo "**** set version tag ****" && \ if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \ NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \ @@ -85,8 +79,8 @@ RUN \ curl -o /app/nextcloud.tar.bz2 -L \ https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \ echo "**** test tarball ****" && \ - tar xvf /app/nextcloud.tar.bz2 -C \ - /tmp && \ + tar xvf /app/nextcloud.tar.bz2 -C \ + /tmp && \ echo "**** cleanup ****" && \ rm -rf \ /tmp/* diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 74965e8..db3ecbb 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.17 +FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.18 # set version label ARG BUILD_DATE @@ -14,49 +14,43 @@ ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so" RUN \ echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ + apk add --no-cache \ ffmpeg \ gnu-libiconv \ imagemagick \ libxml2 \ - php81-apcu \ - php81-bcmath \ - php81-bz2 \ - php81-ctype \ - php81-curl \ - php81-dom \ - php81-exif \ - php81-ftp \ - php81-gd \ - php81-gmp \ - php81-iconv \ - php81-imap \ - php81-intl \ - php81-ldap \ - php81-opcache \ - php81-pcntl \ - php81-pdo_mysql \ - php81-pdo_pgsql \ - php81-pdo_sqlite \ - php81-pecl-imagick \ - php81-pecl-memcached \ - php81-pgsql \ - php81-phar \ - php81-posix \ - php81-redis \ - php81-sodium \ - php81-sqlite3 \ - php81-sysvsem \ - php81-xmlreader \ - php81-zip \ + php82-apcu \ + php82-bcmath \ + php82-bz2 \ + php82-dom \ + php82-exif \ + php82-ftp \ + php82-gd \ + php82-gmp \ + php82-imap \ + php82-intl \ + php82-ldap \ + php82-opcache \ + php82-pcntl \ + php82-pdo_mysql \ + php82-pdo_pgsql \ + php82-pdo_sqlite \ + php82-pecl-imagick \ + php82-pecl-memcached \ + php82-pecl-smbclient \ + php82-pgsql \ + php82-posix \ + php82-redis \ + php82-sodium \ + php82-sqlite3 \ + php82-sysvsem \ + php82-xmlreader \ samba-client \ sudo && \ - apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ - php81-pecl-smbclient && \ apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - php81-pecl-mcrypt && \ + php82-pecl-mcrypt && \ echo "**** configure php and nginx for nextcloud ****" && \ - echo 'apc.enable_cli=1' >> /etc/php81/conf.d/apcu.ini && \ + echo 'apc.enable_cli=1' >> /etc/php82/conf.d/apcu.ini && \ sed -i \ -e 's/;opcache.enable.*=.*/opcache.enable=1/g' \ -e 's/;opcache.interned_strings_buffer.*=.*/opcache.interned_strings_buffer=16/g' \ @@ -70,11 +64,11 @@ RUN \ -e 's/upload_max_filesize.*=.*2M/upload_max_filesize=1024M/g' \ -e 's/post_max_size.*=.*8M/post_max_size=1024M/g' \ -e 's/output_buffering.*=.*/output_buffering=0/g' \ - /etc/php81/php.ini && \ + /etc/php82/php.ini && \ sed -i \ '/opcache.enable=1/a opcache.enable_cli=1' \ - /etc/php81/php.ini && \ - echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php81/php-fpm.conf && \ + /etc/php82/php.ini && \ + echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php82/php-fpm.conf && \ echo "**** set version tag ****" && \ if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \ NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \ @@ -85,8 +79,8 @@ RUN \ curl -o /app/nextcloud.tar.bz2 -L \ https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \ echo "**** test tarball ****" && \ - tar xvf /app/nextcloud.tar.bz2 -C \ - /tmp && \ + tar xvf /app/nextcloud.tar.bz2 -C \ + /tmp && \ echo "**** cleanup ****" && \ rm -rf \ /tmp/* diff --git a/Dockerfile.armhf b/Dockerfile.armhf deleted file mode 100644 index 6ee1dd0..0000000 --- a/Dockerfile.armhf +++ /dev/null @@ -1,99 +0,0 @@ -# syntax=docker/dockerfile:1 - -FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.17 - -# set version label -ARG BUILD_DATE -ARG VERSION -ARG NEXTCLOUD_RELEASE -LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="aptalca" - -# environment settings -ENV LD_PRELOAD="/usr/lib/preloadable_libiconv.so" - -RUN \ - echo "**** install runtime packages ****" && \ - apk add --no-cache --upgrade \ - ffmpeg \ - gnu-libiconv \ - imagemagick \ - libxml2 \ - php81-apcu \ - php81-bcmath \ - php81-bz2 \ - php81-ctype \ - php81-curl \ - php81-dom \ - php81-exif \ - php81-ftp \ - php81-gd \ - php81-gmp \ - php81-iconv \ - php81-imap \ - php81-intl \ - php81-ldap \ - php81-opcache \ - php81-pcntl \ - php81-pdo_mysql \ - php81-pdo_pgsql \ - php81-pdo_sqlite \ - php81-pecl-imagick \ - php81-pecl-memcached \ - php81-pgsql \ - php81-phar \ - php81-posix \ - php81-redis \ - php81-sodium \ - php81-sqlite3 \ - php81-sysvsem \ - php81-xmlreader \ - php81-zip \ - samba-client \ - sudo && \ - apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community \ - php81-pecl-smbclient && \ - apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - php81-pecl-mcrypt && \ - echo "**** configure php and nginx for nextcloud ****" && \ - echo 'apc.enable_cli=1' >> /etc/php81/conf.d/apcu.ini && \ - sed -i \ - -e 's/;opcache.enable.*=.*/opcache.enable=1/g' \ - -e 's/;opcache.interned_strings_buffer.*=.*/opcache.interned_strings_buffer=16/g' \ - -e 's/;opcache.max_accelerated_files.*=.*/opcache.max_accelerated_files=10000/g' \ - -e 's/;opcache.memory_consumption.*=.*/opcache.memory_consumption=128/g' \ - -e 's/;opcache.save_comments.*=.*/opcache.save_comments=1/g' \ - -e 's/;opcache.revalidate_freq.*=.*/opcache.revalidate_freq=1/g' \ - -e 's/;always_populate_raw_post_data.*=.*/always_populate_raw_post_data=-1/g' \ - -e 's/memory_limit.*=.*128M/memory_limit=512M/g' \ - -e 's/max_execution_time.*=.*30/max_execution_time=120/g' \ - -e 's/upload_max_filesize.*=.*2M/upload_max_filesize=1024M/g' \ - -e 's/post_max_size.*=.*8M/post_max_size=1024M/g' \ - -e 's/output_buffering.*=.*/output_buffering=0/g' \ - /etc/php81/php.ini && \ - sed -i \ - '/opcache.enable=1/a opcache.enable_cli=1' \ - /etc/php81/php.ini && \ - echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php81/php-fpm.conf && \ - echo "**** set version tag ****" && \ - if [ -z ${NEXTCLOUD_RELEASE+x} ]; then \ - NEXTCLOUD_RELEASE=$(curl -sX GET https://api.github.com/repos/nextcloud/server/releases \ - | jq -r '.[] | select(.prerelease != true) | .tag_name' \ - | sed 's|^v||g' | sort -rV | head -1); \ - fi && \ - echo "**** download nextcloud ****" && \ - curl -o /app/nextcloud.tar.bz2 -L \ - https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_RELEASE}.tar.bz2 && \ - echo "**** test tarball ****" && \ - tar xvf /app/nextcloud.tar.bz2 -C \ - /tmp && \ - echo "**** cleanup ****" && \ - rm -rf \ - /tmp/* - -# copy local files -COPY root/ / - -# ports and volumes -EXPOSE 80 443 -VOLUME /config diff --git a/Jenkinsfile b/Jenkinsfile index 9894c67..32b60d9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -163,7 +163,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-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } @@ -186,7 +186,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-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } @@ -209,7 +209,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-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST } @@ -515,44 +515,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-nextcloud/packages\" \ - --label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-nextcloud\" \ - --label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-nextcloud\" \ - --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=Nextcloud\" \ - --label \"org.opencontainers.image.description=[Nextcloud](https://nextcloud.com/) gives you access to all your files wherever you are. Where are your photos and documents? With Nextcloud you pick a server of your choice, at home, in a data center or at a provider. And that is where your files will be. Nextcloud runs on that server, protecting your data and giving you access from your desktop or mobile devices. Through Nextcloud you also access, sync and share your existing data on that FTP drive at the office, a Dropbox or a NAS you have at home. \" \ - --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' @@ -693,9 +655,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 \ @@ -798,8 +758,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 @@ -807,49 +765,47 @@ pipeline { docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest 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-latest - 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-latest 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-latest - docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker push ${MANIFESTIMAGE}:arm32v7-latest - docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-latest 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}:latest || : - docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest - docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --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-latest") + if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || : + docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest + docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest + fi docker manifest push --purge ${MANIFESTIMAGE}:latest docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} diff --git a/README.md b/README.md index bf6538f..4b5e915 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ The architectures supported by this image are: | :----: | :----: | ---- | | x86-64 | ✅ | amd64-\ | | arm64 | ✅ | arm64v8-\ | -| armhf | ✅ | arm32v7-\ | +| armhf | ❌ | | ## Application Setup @@ -254,6 +254,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. * **13.04.23:** - Move ssl.conf include to default.conf. * **21.03.23:** - Add php81-sysvsem as new dep for v26. Update default X-Robots-Tag to `noindex, nofollow``. * **02.03.23:** - Set permissions on crontabs during init. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 82aeb3f..cf356f7 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -7,6 +7,7 @@ custom_version_command: "curl -sX GET https://api.github.com/repos/nextcloud/ser release_type: stable release_tag: latest ls_branch: master +build_armhf: false repo_vars: - BUILD_VERSION_ARG = 'NEXTCLOUD_RELEASE' - LS_USER = 'linuxserver' diff --git a/readme-vars.yml b/readme-vars.yml index a4c6eba..68d10cb 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -15,7 +15,6 @@ project_blurb_optional_extras_enabled: false available_architectures: - { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - - { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"} # development version development_versions: false @@ -77,6 +76,7 @@ app_setup_block: | # changelog changelogs: + - { date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf." } - { date: "13.04.23:", desc: "Move ssl.conf include to default.conf." } - { date: "21.03.23:", desc: "Add php81-sysvsem as new dep for v26. Update default X-Robots-Tag to `noindex, nofollow``." } - { date: "02.03.23:", desc: "Set permissions on crontabs during init." }