Skip to content

Commit 570ac60

Browse files
authored
Add versions.json (#1995)
* Add %%DEBIAN_VERSION%% placeholder Signed-off-by: Daniel Rudolf <[email protected]> * Replace %%BASE_DOWNLOAD_URL%% placeholder by %%DOWNLOAD_URL{_ASC}%% Signed-off-by: Daniel Rudolf <[email protected]> * 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 <[email protected]> * Run update.sh Signed-off-by: Daniel Rudolf <[email protected]> --------- Signed-off-by: Daniel Rudolf <[email protected]>
1 parent f2c8cb5 commit 570ac60

10 files changed

Lines changed: 110 additions & 55 deletions

File tree

25/apache/Dockerfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,8 @@ RUN set -ex; \
135135
apt-get update; \
136136
apt-get install -y --no-install-recommends $fetchDeps; \
137137
\
138-
curl -fsSL -o nextcloud.tar.bz2 \
139-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
140-
curl -fsSL -o nextcloud.tar.bz2.asc \
141-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
138+
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2"; \
139+
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc"; \
142140
export GNUPGHOME="$(mktemp -d)"; \
143141
# gpg key from https://nextcloud.com/nextcloud.asc
144142
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

25/fpm-alpine/Dockerfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,8 @@ RUN set -ex; \
113113
gnupg \
114114
; \
115115
\
116-
curl -fsSL -o nextcloud.tar.bz2 \
117-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
118-
curl -fsSL -o nextcloud.tar.bz2.asc \
119-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
116+
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2"; \
117+
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc"; \
120118
export GNUPGHOME="$(mktemp -d)"; \
121119
# gpg key from https://nextcloud.com/nextcloud.asc
122120
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

25/fpm/Dockerfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,8 @@ RUN set -ex; \
127127
apt-get update; \
128128
apt-get install -y --no-install-recommends $fetchDeps; \
129129
\
130-
curl -fsSL -o nextcloud.tar.bz2 \
131-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
132-
curl -fsSL -o nextcloud.tar.bz2.asc \
133-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
130+
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2"; \
131+
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc"; \
134132
export GNUPGHOME="$(mktemp -d)"; \
135133
# gpg key from https://nextcloud.com/nextcloud.asc
136134
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

26/apache/Dockerfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,8 @@ RUN set -ex; \
136136
apt-get update; \
137137
apt-get install -y --no-install-recommends $fetchDeps; \
138138
\
139-
curl -fsSL -o nextcloud.tar.bz2 \
140-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
141-
curl -fsSL -o nextcloud.tar.bz2.asc \
142-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
139+
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2"; \
140+
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc"; \
143141
export GNUPGHOME="$(mktemp -d)"; \
144142
# gpg key from https://nextcloud.com/nextcloud.asc
145143
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

26/fpm-alpine/Dockerfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,8 @@ RUN set -ex; \
114114
gnupg \
115115
; \
116116
\
117-
curl -fsSL -o nextcloud.tar.bz2 \
118-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
119-
curl -fsSL -o nextcloud.tar.bz2.asc \
120-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
117+
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2"; \
118+
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc"; \
121119
export GNUPGHOME="$(mktemp -d)"; \
122120
# gpg key from https://nextcloud.com/nextcloud.asc
123121
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

26/fpm/Dockerfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,8 @@ RUN set -ex; \
128128
apt-get update; \
129129
apt-get install -y --no-install-recommends $fetchDeps; \
130130
\
131-
curl -fsSL -o nextcloud.tar.bz2 \
132-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
133-
curl -fsSL -o nextcloud.tar.bz2.asc \
134-
"https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
131+
curl -fsSL -o nextcloud.tar.bz2 "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2"; \
132+
curl -fsSL -o nextcloud.tar.bz2.asc "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc"; \
135133
export GNUPGHOME="$(mktemp -d)"; \
136134
# gpg key from https://nextcloud.com/nextcloud.asc
137135
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

Dockerfile-alpine.template

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,8 @@ RUN set -ex; \
113113
gnupg \
114114
; \
115115
\
116-
curl -fsSL -o nextcloud.tar.bz2 \
117-
"%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
118-
curl -fsSL -o nextcloud.tar.bz2.asc \
119-
"%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
116+
curl -fsSL -o nextcloud.tar.bz2 "%%DOWNLOAD_URL%%"; \
117+
curl -fsSL -o nextcloud.tar.bz2.asc "%%DOWNLOAD_URL_ASC%%"; \
120118
export GNUPGHOME="$(mktemp -d)"; \
121119
# gpg key from https://nextcloud.com/nextcloud.asc
122120
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

Dockerfile-debian.template

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM php:%%PHP_VERSION%%-%%VARIANT%%-bullseye
1+
FROM php:%%PHP_VERSION%%-%%VARIANT%%-%%DEBIAN_VERSION%%
22

33
# entrypoint.sh and cron.sh dependencies
44
RUN set -ex; \
@@ -127,10 +127,8 @@ RUN set -ex; \
127127
apt-get update; \
128128
apt-get install -y --no-install-recommends $fetchDeps; \
129129
\
130-
curl -fsSL -o nextcloud.tar.bz2 \
131-
"%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \
132-
curl -fsSL -o nextcloud.tar.bz2.asc \
133-
"%%BASE_DOWNLOAD_URL%%/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \
130+
curl -fsSL -o nextcloud.tar.bz2 "%%DOWNLOAD_URL%%"; \
131+
curl -fsSL -o nextcloud.tar.bz2.asc "%%DOWNLOAD_URL_ASC%%"; \
134132
export GNUPGHOME="$(mktemp -d)"; \
135133
# gpg key from https://nextcloud.com/nextcloud.asc
136134
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \

update.sh

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ declare -A alpine_version=(
88
[default]='3.17'
99
)
1010

11+
declare -A debian_version=(
12+
[default]='bullseye'
13+
)
14+
1115
declare -A php_version=(
1216
[default]='8.1'
1317
)
@@ -93,8 +97,11 @@ function version_greater_or_equal() {
9397
function create_variant() {
9498
dir="$1/$variant"
9599
alpineVersion=${alpine_version[$version]-${alpine_version[default]}}
100+
debianVersion=${debian_version[$version]-${debian_version[default]}}
96101
phpVersion=${php_version[$version]-${php_version[default]}}
97102
crontabInt=${crontab_int[$version]-${crontab_int[default]}}
103+
url="https://download.nextcloud.com/server/releases/nextcloud-$fullversion.tar.bz2"
104+
ascUrl="https://download.nextcloud.com/server/releases/nextcloud-$fullversion.tar.bz2.asc"
98105

99106
# Create the version+variant directory with a Dockerfile.
100107
mkdir -p "$dir"
@@ -105,13 +112,30 @@ function create_variant() {
105112

106113
echo "updating $fullversion [$1] $variant"
107114

115+
# Apply version+variant-specific patches
116+
case "$version" in
117+
25)
118+
case "$variant" in
119+
fpm-alpine)
120+
# Alpine 3.16 / OpenSSL 1.1 is only available for PHP 8.0
121+
phpVersion=8.0
122+
;;
123+
esac
124+
125+
# Nextcloud 26+ recommends sysvsem
126+
sed -ri -e '/sysvsem/d' "$dir/Dockerfile"
127+
;;
128+
esac
129+
108130
# Replace the variables.
109131
sed -ri -e '
110132
s/%%ALPINE_VERSION%%/'"$alpineVersion"'/g;
133+
s/%%DEBIAN_VERSION%%/'"$debianVersion"'/g;
111134
s/%%PHP_VERSION%%/'"$phpVersion"'/g;
112135
s/%%VARIANT%%/'"$variant"'/g;
113136
s/%%VERSION%%/'"$fullversion"'/g;
114-
s/%%BASE_DOWNLOAD_URL%%/'"$2"'/g;
137+
s/%%DOWNLOAD_URL%%/'"$(sed -e 's/[\/&]/\\&/g' <<< "$url")"'/g;
138+
s/%%DOWNLOAD_URL_ASC%%/'"$(sed -e 's/[\/&]/\\&/g' <<< "$ascUrl")"'/g;
115139
s/%%CMD%%/'"${cmd[$variant]}"'/g;
116140
s|%%VARIANT_EXTRAS%%|'"${extras[$variant]}"'|g;
117141
s/%%APCU_VERSION%%/'"${pecl_versions[APCu]}"'/g;
@@ -121,24 +145,6 @@ function create_variant() {
121145
s/%%CRONTAB_INT%%/'"$crontabInt"'/g;
122146
' "$dir/Dockerfile"
123147

124-
# Nextcloud 26+ recommends sysvsem
125-
case "$version" in
126-
25 )
127-
case "$variant" in
128-
fpm-alpine )
129-
# Alpine 3.16 / OpenSSL 1.1 is only available for PHP 8.0
130-
sed -ri -e '
131-
s/FROM php:8\.1-fpm-alpine/FROM php:8.0-fpm-alpine/
132-
' "$dir/Dockerfile"
133-
;;
134-
esac
135-
136-
sed -ri -e '
137-
/sysvsem/d
138-
' "$dir/Dockerfile"
139-
;;
140-
esac
141-
142148
# Copy the shell scripts
143149
for name in entrypoint cron; do
144150
cp "docker-$name.sh" "$dir/$name.sh"
@@ -154,6 +160,16 @@ function create_variant() {
154160
if [ "$variant" != "apache" ]; then
155161
rm "$dir/config/apache-pretty-urls.config.php"
156162
fi
163+
164+
# Add variant to versions.json
165+
[ "${base[$variant]}" == "alpine" ] && baseVersion="$alpineVersion" || baseVersion="$debianVersion"
166+
versionVariantsJson="$(jq -e \
167+
--arg version "$version" --arg variant "$variant" --arg base "${base[$variant]}" --arg baseVersion "$baseVersion" --arg phpVersion "$phpVersion" \
168+
'.[$version].variants[$variant] = {"variant": $variant, "base": $base, "baseVersion": $baseVersion, "phpVersion": $phpVersion}' versions.json)"
169+
versionJson="$(jq -e \
170+
--arg version "$version" --arg fullversion "$fullversion" --arg url "$url" --arg ascUrl "$ascUrl" --argjson variants "$versionVariantsJson" \
171+
'.[$version] = {"branch": $version, "version": $fullversion, "url": $url, "ascUrl": $ascUrl, "variants": $variants[$version].variants}' versions.json)"
172+
printf '%s\n' "$versionJson" > versions.json
157173
}
158174

159175
curl -fsSL 'https://download.nextcloud.com/server/releases/' |tac|tac| \
@@ -164,19 +180,20 @@ curl -fsSL 'https://download.nextcloud.com/server/releases/' |tac|tac| \
164180

165181
find . -maxdepth 1 -type d -regextype sed -regex '\./[[:digit:]]\+\.[[:digit:]]\+\(-rc\|-beta\|-alpha\)\?' -exec rm -r '{}' \;
166182

183+
printf '%s' "{}" > versions.json
184+
167185
fullversions=( $( curl -fsSL 'https://download.nextcloud.com/server/releases/' |tac|tac| \
168186
grep -oE 'nextcloud-[[:digit:]]+(\.[[:digit:]]+){2}' | \
169187
grep -oE '[[:digit:]]+(\.[[:digit:]]+){2}' | \
170188
sort -urV ) )
171189
versions=( $( printf '%s\n' "${fullversions[@]}" | cut -d. -f1 | sort -urV ) )
190+
172191
for version in "${versions[@]}"; do
173192
fullversion="$( printf '%s\n' "${fullversions[@]}" | grep -E "^$version" | head -1 )"
174193

175194
if version_greater_or_equal "$version" "$min_version"; then
176-
177195
for variant in "${variants[@]}"; do
178-
179-
create_variant "$version" "https:\/\/download.nextcloud.com\/server\/releases"
196+
create_variant "$version"
180197
done
181198
fi
182199
done

versions.json

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{
2+
"26": {
3+
"branch": "26",
4+
"version": "26.0.2",
5+
"url": "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2",
6+
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-26.0.2.tar.bz2.asc",
7+
"variants": {
8+
"apache": {
9+
"variant": "apache",
10+
"base": "debian",
11+
"baseVersion": "bullseye",
12+
"phpVersion": "8.1"
13+
},
14+
"fpm": {
15+
"variant": "fpm",
16+
"base": "debian",
17+
"baseVersion": "bullseye",
18+
"phpVersion": "8.1"
19+
},
20+
"fpm-alpine": {
21+
"variant": "fpm-alpine",
22+
"base": "alpine",
23+
"baseVersion": "3.17",
24+
"phpVersion": "8.1"
25+
}
26+
}
27+
},
28+
"25": {
29+
"branch": "25",
30+
"version": "25.0.7",
31+
"url": "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2",
32+
"ascUrl": "https://download.nextcloud.com/server/releases/nextcloud-25.0.7.tar.bz2.asc",
33+
"variants": {
34+
"apache": {
35+
"variant": "apache",
36+
"base": "debian",
37+
"baseVersion": "bullseye",
38+
"phpVersion": "8.1"
39+
},
40+
"fpm": {
41+
"variant": "fpm",
42+
"base": "debian",
43+
"baseVersion": "bullseye",
44+
"phpVersion": "8.1"
45+
},
46+
"fpm-alpine": {
47+
"variant": "fpm-alpine",
48+
"base": "alpine",
49+
"baseVersion": "3.16",
50+
"phpVersion": "8.0"
51+
}
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)