summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Rudolf <github.com@daniel-rudolf.de>2023-05-31 14:13:56 +0200
committerGitHub <noreply@github.com>2023-05-31 12:13:56 +0000
commit570ac60ed20c5197eb050c8ec55eae5d9c3e58eb (patch)
tree1d2f324f5ab2c264a22032dd2f8ddbbd387ef5bc
parentf2c8cb599e6b1fbf750aee93dd3ce60889e02487 (diff)
Add versions.json (#1995)
* Add %%DEBIAN_VERSION%% placeholder Signed-off-by: Daniel Rudolf <github.com@daniel-rudolf.de> * Replace %%BASE_DOWNLOAD_URL%% placeholder by %%DOWNLOAD_URL{_ASC}%% Signed-off-by: Daniel Rudolf <github.com@daniel-rudolf.de> * Add version.json 'versions.json' contains information about the latest branches and variants. It is managed by `./update.sh`, there's no need to edit this file manually, just run `./update.sh`. Signed-off-by: Daniel Rudolf <github.com@daniel-rudolf.de> * Run update.sh Signed-off-by: Daniel Rudolf <github.com@daniel-rudolf.de> --------- Signed-off-by: Daniel Rudolf <github.com@daniel-rudolf.de>
-rw-r--r--25/apache/Dockerfile6
-rw-r--r--25/fpm-alpine/Dockerfile6
-rw-r--r--25/fpm/Dockerfile6
-rw-r--r--26/apache/Dockerfile6
-rw-r--r--26/fpm-alpine/Dockerfile6
-rw-r--r--26/fpm/Dockerfile6
-rw-r--r--Dockerfile-alpine.template6
-rw-r--r--Dockerfile-debian.template8
-rwxr-xr-xupdate.sh61
-rw-r--r--versions.json54
10 files changed, 110 insertions, 55 deletions
diff --git a/25/apache/Dockerfile b/25/apache/Dockerfile
index 45ff8489..150d0cc7 100644
--- a/25/apache/Dockerfile
+++ b/25/apache/Dockerfile
@@ -135,10 +135,8 @@ RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/25/fpm-alpine/Dockerfile b/25/fpm-alpine/Dockerfile
index a8ad27ea..7af9e2af 100644
--- a/25/fpm-alpine/Dockerfile
+++ b/25/fpm-alpine/Dockerfile
@@ -113,10 +113,8 @@ RUN set -ex; \
gnupg \
; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/25/fpm/Dockerfile b/25/fpm/Dockerfile
index 3ba5e4ae..94ad0813 100644
--- a/25/fpm/Dockerfile
+++ b/25/fpm/Dockerfile
@@ -127,10 +127,8 @@ RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/26/apache/Dockerfile b/26/apache/Dockerfile
index 7a79974b..9efd8fd6 100644
--- a/26/apache/Dockerfile
+++ b/26/apache/Dockerfile
@@ -136,10 +136,8 @@ RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/26/fpm-alpine/Dockerfile b/26/fpm-alpine/Dockerfile
index 0507b90f..1ef8f5b9 100644
--- a/26/fpm-alpine/Dockerfile
+++ b/26/fpm-alpine/Dockerfile
@@ -114,10 +114,8 @@ RUN set -ex; \
gnupg \
; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/26/fpm/Dockerfile b/26/fpm/Dockerfile
index d4d594f7..303f0efb 100644
--- a/26/fpm/Dockerfile
+++ b/26/fpm/Dockerfile
@@ -128,10 +128,8 @@ RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template
index 59b73bcc..5aaded89 100644
--- a/Dockerfile-alpine.template
+++ b/Dockerfile-alpine.template
@@ -113,10 +113,8 @@ RUN set -ex; \
gnupg \
; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "%%DOWNLOAD_URL%%"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "%%DOWNLOAD_URL_ASC%%"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template
index d3fb81ee..4a9d975f 100644
--- a/Dockerfile-debian.template
+++ b/Dockerfile-debian.template
@@ -1,4 +1,4 @@
-FROM php:%%PHP_VERSION%%-%%VARIANT%%-bullseye
+FROM php:%%PHP_VERSION%%-%%VARIANT%%-%%DEBIAN_VERSION%%
# entrypoint.sh and cron.sh dependencies
RUN set -ex; \
@@ -127,10 +127,8 @@ RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
- curl -fsSL -o nextcloud.tar.bz2 \
- "%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
- curl -fsSL -o nextcloud.tar.bz2.asc \
- "%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
+ curl -fsSL -o nextcloud.tar.bz2 "%%DOWNLOAD_URL%%"; \
+ curl -fsSL -o nextcloud.tar.bz2.asc "%%DOWNLOAD_URL_ASC%%"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
diff --git a/update.sh b/update.sh
index d19cad71..45864735 100755
--- a/update.sh
+++ b/update.sh
@@ -8,6 +8,10 @@ declare -A alpine_version=(
[default]='3.17'
)
+declare -A debian_version=(
+ [default]='bullseye'
+)
+
declare -A php_version=(
[default]='8.1'
)
@@ -93,8 +97,11 @@ function version_greater_or_equal() {
function create_variant() {
dir="$1/$variant"
alpineVersion=${alpine_version[$version]-${alpine_version[default]}}
+ debianVersion=${debian_version[$version]-${debian_version[default]}}
phpVersion=${php_version[$version]-${php_version[default]}}
crontabInt=${crontab_int[$version]-${crontab_int[default]}}
+ url="https://download.nextcloud.com/server/releases/nextcloud-$fullversion.tar.bz2"
+ ascUrl="https://download.nextcloud.com/server/releases/nextcloud-$fullversion.tar.bz2.asc"
# Create the version+variant directory with a Dockerfile.
mkdir -p "$dir"
@@ -105,13 +112,30 @@ function create_variant() {
echo "updating $fullversion [$1] $variant"
+ # Apply version+variant-specific patches
+ case "$version" in
+ 25)
+ case "$variant" in
+ fpm-alpine)
+ # Alpine 3.16 / OpenSSL 1.1 is only available for PHP 8.0
+ phpVersion=8.0
+ ;;
+ esac
+
+ # Nextcloud 26+ recommends sysvsem
+ sed -ri -e '/sysvsem/d' "$dir/Dockerfile"
+ ;;
+ esac
+
# Replace the variables.
sed -ri -e '
s/%%ALPINE_VERSION%%/'"$alpineVersion"'/g;
+ s/%%DEBIAN_VERSION%%/'"$debianVersion"'/g;
s/%%PHP_VERSION%%/'"$phpVersion"'/g;
s/%%VARIANT%%/'"$variant"'/g;
s/%%VERSION%%/'"$fullversion"'/g;
- s/%%BASE_DOWNLOAD_URL%%/'"$2"'/g;
+ s/%%DOWNLOAD_URL%%/'"$(sed -e 's/[\/&]/\\&/g' <<< "$url")"'/g;
+ s/%%DOWNLOAD_URL_ASC%%/'"$(sed -e 's/[\/&]/\\&/g' <<< "$ascUrl")"'/g;
s/%%CMD%%/'"${cmd[$variant]}"'/g;
s|%%VARIANT_EXTRAS%%|'"${extras[$variant]}"'|g;
s/%%APCU_VERSION%%/'"${pecl_versions[APCu]}"'/g;
@@ -121,24 +145,6 @@ function create_variant() {
s/%%CRONTAB_INT%%/'"$crontabInt"'/g;
' "$dir/Dockerfile"
- # Nextcloud 26+ recommends sysvsem
- case "$version" in
- 25 )
- case "$variant" in
- fpm-alpine )
- # Alpine 3.16 / OpenSSL 1.1 is only available for PHP 8.0
- sed -ri -e '
- s/FROM php:8\.1-fpm-alpine/FROM php:8.0-fpm-alpine/
- ' "$dir/Dockerfile"
- ;;
- esac
-
- sed -ri -e '
- /sysvsem/d
- ' "$dir/Dockerfile"
- ;;
- esac
-
# Copy the shell scripts
for name in entrypoint cron; do
cp "docker-$name.sh" "$dir/$name.sh"
@@ -154,6 +160,16 @@ function create_variant() {
if [ "$variant" != "apache" ]; then
rm "$dir/config/apache-pretty-urls.config.php"
fi
+
+ # Add variant to versions.json
+ [ "${base[$variant]}" == "alpine" ] && baseVersion="$alpineVersion" || baseVersion="$debianVersion"
+ versionVariantsJson="$(jq -e \
+ --arg version "$version" --arg variant "$variant" --arg base "${base[$variant]}" --arg baseVersion "$baseVersion" --arg phpVersion "$phpVersion" \
+ '.[$version].variants[$variant] = {"variant": $variant, "base": $base, "baseVersion": $baseVersion, "phpVersion": $phpVersion}' versions.json)"
+ versionJson="$(jq -e \
+ --arg version "$version" --arg fullversion "$fullversion" --arg url "$url" --arg ascUrl "$ascUrl" --argjson variants "$versionVariantsJson" \
+ '.[$version] = {"branch": $version, "version": $fullversion, "url": $url, "ascUrl": $ascUrl, "variants": $variants[$version].variants}' versions.json)"
+ printf '%s\n' "$versionJson" > versions.json
}
curl -fsSL 'https://download.nextcloud.com/server/releases/' |tac|tac| \
@@ -164,19 +180,20 @@ curl -fsSL 'https://download.nextcloud.com/server/releases/' |tac|tac| \
find . -maxdepth 1 -type d -regextype sed -regex '\./[[:digit:]]\+\.[[:digit:]]\+\(-rc\|-beta\|-alpha\)\?' -exec rm -r '{}' \;
+printf '%s' "{}" > versions.json
+
fullversions=( $( curl -fsSL 'https://download.nextcloud.com/server/releases/' |tac|tac| \
grep -oE 'nextcloud-[[:digit:]]+(\.[[:digit:]]+){2}' | \
grep -oE '[[:digit:]]+(\.[[:digit:]]+){2}' | \
sort -urV ) )
versions=( $( printf '%s\n' "${fullversions[@]}" | cut -d. -f1 | sort -urV ) )
+
for version in "${versions[@]}"; do
fullversion="$( printf '%s\n' "${fullversions[@]}" | grep -E "^$version" | head -1 )"
if version_greater_or_equal "$version" "$min_version"; then
-
for variant in "${variants[@]}"; do
-
- create_variant "$version" "https:\/\/download.nextcloud.com\/server\/releases"
+ create_variant "$version"
done
fi
done
diff --git a/versions.json b/versions.json
new file mode 100644
index 00000000..de910976
--- /dev/null
+++ b/versions.json
@@ -0,0 +1,54 @@
+{
+ "26": {
+ "branch": "26",
+ "version": "26.0.2",
+ "url": "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2",
+ "ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc",
+ "variants": {
+ "apache": {
+ "variant": "apache",
+ "base": "debian",
+ "baseVersion": "bullseye",
+ "phpVersion": "8.1"
+ },
+ "fpm": {
+ "variant": "fpm",
+ "base": "debian",
+ "baseVersion": "bullseye",
+ "phpVersion": "8.1"
+ },
+ "fpm-alpine": {
+ "variant": "fpm-alpine",
+ "base": "alpine",
+ "baseVersion": "3.17",
+ "phpVersion": "8.1"
+ }
+ }
+ },
+ "25": {
+ "branch": "25",
+ "version": "25.0.7",
+ "url": "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2",
+ "ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc",
+ "variants": {
+ "apache": {
+ "variant": "apache",
+ "base": "debian",
+ "baseVersion": "bullseye",
+ "phpVersion": "8.1"
+ },
+ "fpm": {
+ "variant": "fpm",
+ "base": "debian",
+ "baseVersion": "bullseye",
+ "phpVersion": "8.1"
+ },
+ "fpm-alpine": {
+ "variant": "fpm-alpine",
+ "base": "alpine",
+ "baseVersion": "3.16",
+ "phpVersion": "8.0"
+ }
+ }
+ }
+}