| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | set -eo pipefail | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare -A php_version=( | 
					
						
							| 
									
										
										
										
											2019-06-23 00:24:02 +00:00
										 |  |  | 	[default]='7.3' | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare -A cmd=( | 
					
						
							|  |  |  | 	[apache]='apache2-foreground' | 
					
						
							|  |  |  | 	[fpm]='php-fpm' | 
					
						
							|  |  |  | 	[fpm-alpine]='php-fpm' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare -A base=( | 
					
						
							|  |  |  | 	[apache]='debian' | 
					
						
							|  |  |  | 	[fpm]='debian' | 
					
						
							|  |  |  | 	[fpm-alpine]='alpine' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare -A extras=( | 
					
						
							| 
									
										
										
										
											2019-08-25 20:58:48 +00:00
										 |  |  | 	[apache]='\nRUN set -ex;\\\n    a2enmod rewrite remoteip ;\\\n    {\\\n     echo RemoteIPHeader X-Real-IP ;\\\n     echo RemoteIPTrustedProxy 10.0.0.0/8 ;\\\n     echo RemoteIPTrustedProxy 172.16.0.0/12 ;\\\n     echo RemoteIPTrustedProxy 192.168.0.0/16 ;\\\n    } > /etc/apache2/conf-available/remoteip.conf;\\\n    a2enconf remoteip' | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 	[fpm]='' | 
					
						
							|  |  |  | 	[fpm-alpine]='' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 20:47:40 +00:00
										 |  |  | declare -A entrypoints=( | 
					
						
							|  |  |  |   [stable]='entrypoint.sh' | 
					
						
							|  |  |  |   [develop]='entrypoint-dev.sh' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-08 19:47:56 +00:00
										 |  |  | # Only for debian variant | 
					
						
							| 
									
										
										
										
											2020-03-09 20:39:50 +00:00
										 |  |  | tini_version="$( | 
					
						
							|  |  |  | 	git ls-remote --tags https://github.com/krallin/tini.git \
 | 
					
						
							|  |  |  | 		| cut -d/ -f3 \
 | 
					
						
							|  |  |  | 		| grep -vE -- '.pre' \
 | 
					
						
							|  |  |  | 		| sed -E 's/^v//' \
 | 
					
						
							|  |  |  | 		| sort -V \
 | 
					
						
							|  |  |  | 		| tail -1 | 
					
						
							|  |  |  | )"
 | 
					
						
							| 
									
										
										
										
											2020-03-08 19:47:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-23 00:24:02 +00:00
										 |  |  | apcu_version="$( | 
					
						
							|  |  |  | 	git ls-remote --tags https://github.com/krakjoe/apcu.git \
 | 
					
						
							|  |  |  | 		| cut -d/ -f3 \
 | 
					
						
							|  |  |  | 		| grep -vE -- '-rc|-b' \
 | 
					
						
							|  |  |  | 		| sed -E 's/^v//' \
 | 
					
						
							|  |  |  | 		| sort -V \
 | 
					
						
							|  |  |  | 		| tail -1 | 
					
						
							|  |  |  | )"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | memcached_version="$( | 
					
						
							|  |  |  | 	git ls-remote --tags https://github.com/php-memcached-dev/php-memcached.git \
 | 
					
						
							|  |  |  | 		| cut -d/ -f3 \
 | 
					
						
							|  |  |  | 		| grep -vE -- '-rc|-b' \
 | 
					
						
							|  |  |  | 		| sed -E 's/^[rv]//' \
 | 
					
						
							|  |  |  | 		| sort -V \
 | 
					
						
							|  |  |  | 		| tail -1 | 
					
						
							|  |  |  | )"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | redis_version="$( | 
					
						
							|  |  |  | 	git ls-remote --tags https://github.com/phpredis/phpredis.git \
 | 
					
						
							|  |  |  | 		| cut -d/ -f3 \
 | 
					
						
							|  |  |  | 		| grep -viE '[a-z]' \
 | 
					
						
							|  |  |  | 		| tr -d '^{}' \
 | 
					
						
							|  |  |  | 		| sort -V \
 | 
					
						
							|  |  |  | 		| tail -1 | 
					
						
							|  |  |  | )"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | imagick_version="$( | 
					
						
							|  |  |  | 	git ls-remote --tags https://github.com/mkoppanen/imagick.git \
 | 
					
						
							|  |  |  | 		| cut -d/ -f3 \
 | 
					
						
							|  |  |  | 		| grep -viE '[a-z]' \
 | 
					
						
							|  |  |  | 		| tr -d '^{}' \
 | 
					
						
							|  |  |  | 		| sort -V \
 | 
					
						
							|  |  |  | 		| tail -1 | 
					
						
							|  |  |  | )"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | declare -A pecl_versions=( | 
					
						
							| 
									
										
										
										
											2019-06-23 00:24:02 +00:00
										 |  |  | 	[APCu]="$apcu_version" | 
					
						
							|  |  |  | 	[memcached]="$memcached_version" | 
					
						
							|  |  |  | 	[redis]="$redis_version" | 
					
						
							|  |  |  | 	[imagick]="$imagick_version" | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare -A install_extras=( | 
					
						
							| 
									
										
										
										
											2020-06-14 16:41:58 +00:00
										 |  |  |     ['stable']='\nRUN set -ex; \\\n    curl -fsSL -o friendica.tar.gz \\\n        "https://friendi.ca/wp-content/uploads/${FRIENDICA_VERSION_YEAR}/${FRIENDICA_VERSION_MONTH}/friendica-full-${FRIENDICA_VERSION}.tar.gz"; \\\n    tar -xzf friendica.tar.gz -C /usr/src/; \\\n    rm friendica.tar.gz; \\\n    mv -f /usr/src/friendica-full-${FRIENDICA_VERSION}/ /usr/src/friendica; \\\n    chmod 777 /usr/src/friendica/view/smarty3; \\\n    curl -fsSL -o friendica_addons.tar.gz \\\n        "https://github.com/friendica/friendica-addons/archive/${FRIENDICA_ADDONS}.tar.gz"; \\\n    mkdir -p /usr/src/friendica/proxy; \\\n    mkdir -p /usr/src/friendica/addon; \\\n    tar -xzf friendica_addons.tar.gz -C /usr/src/friendica/addon --strip-components=1; \\\n    rm friendica_addons.tar.gz;' | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  |     ['develop']='' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | variants=( | 
					
						
							|  |  |  | 	apache | 
					
						
							|  |  |  | 	fpm | 
					
						
							|  |  |  | 	fpm-alpine | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | versions=( | 
					
						
							| 
									
										
										
										
											2020-03-31 21:22:16 +00:00
										 |  |  |     2020.03 | 
					
						
							|  |  |  |     2020.06-dev | 
					
						
							| 
									
										
										
										
											2020-06-14 15:45:02 +00:00
										 |  |  |     2020.06-rc | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | travisEnv= | 
					
						
							|  |  |  | travisEnvAmd64= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function create_variant() { | 
					
						
							| 
									
										
										
										
											2019-02-26 08:10:19 +00:00
										 |  |  | 	dockerName=${1,,} | 
					
						
							|  |  |  | 	dir="$dockerName/$variant" | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	# Create the version+variant directory with a Dockerfile. | 
					
						
							|  |  |  | 	mkdir -p "$dir" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         template="Dockerfile-${base[$variant]}.template" | 
					
						
							|  |  |  |         echo "# DO NOT EDIT: created by update.sh from $template" > "$dir/Dockerfile" | 
					
						
							|  |  |  | 	cat "$template" >> "$dir/Dockerfile" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Check which installation typ we need. If develop, the source will get downloaded by git. | 
					
						
							|  |  |  |     install_type='stable' | 
					
						
							| 
									
										
										
										
											2019-02-20 17:55:40 +00:00
										 |  |  |     if [[ "${1,,}" == *-dev ]] || [[ "${1,,}" == *-rc ]]; then | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  |       install_type='develop' | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-14 16:41:58 +00:00
										 |  |  |   # Get Year / Month of the Version string | 
					
						
							|  |  |  |   VERSION_PARTS=(${1//./ }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 	echo "updating $1 [$install_type] $variant" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	# Replace the variables. | 
					
						
							|  |  |  | 	sed -ri -e ' | 
					
						
							|  |  |  | 		s/%%PHP_VERSION%%/'"${php_version[$version]-${php_version[default]}}"'/g; | 
					
						
							|  |  |  | 		s/%%VARIANT%%/'"$variant"'/g; | 
					
						
							|  |  |  | 		s/%%VERSION%%/'"$1"'/g; | 
					
						
							| 
									
										
										
										
											2020-06-14 16:41:58 +00:00
										 |  |  | 		s/%%VERSION_YEAR%%/'"${VERSION_PARTS[0]}"'/g; | 
					
						
							|  |  |  | 		s/%%VERSION_MONTH%%/'"${VERSION_PARTS[1]}"'/g; | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 		s/%%CMD%%/'"${cmd[$variant]}"'/g; | 
					
						
							|  |  |  | 		s|%%VARIANT_EXTRAS%%|'"${extras[$variant]}"'|g; | 
					
						
							|  |  |  | 		s|%%INSTALL_EXTRAS%%|'"${install_extras[$install_type]}"'|g; | 
					
						
							| 
									
										
										
										
											2019-06-23 00:24:02 +00:00
										 |  |  | 		s/%%APCU_VERSION%%/'"${pecl_versions[APCu]}"'/g; | 
					
						
							|  |  |  | 		s/%%IMAGICK_VERSION%%/'"${pecl_versions[imagick]}"'/g; | 
					
						
							| 
									
										
										
										
											2018-06-22 19:12:06 +00:00
										 |  |  | 		s/%%MEMCACHED_VERSION%%/'"${pecl_versions[memcached]}"'/g; | 
					
						
							|  |  |  | 		s/%%REDIS_VERSION%%/'"${pecl_versions[redis]}"'/g; | 
					
						
							| 
									
										
										
										
											2019-11-26 20:47:40 +00:00
										 |  |  | 		s/%%ENTRYPOINT%%/'"${entrypoints[$install_type]}"'/g; | 
					
						
							| 
									
										
										
										
											2020-03-08 19:47:56 +00:00
										 |  |  | 		s/%%TINI_VERSION%%/'"${tini_version}"'/g; | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 	' "$dir/Dockerfile" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-19 15:37:44 +00:00
										 |  |  | 	for name in entrypoint cron; do | 
					
						
							|  |  |  | 		cp "docker-$name.sh" "$dir/$name.sh" | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 	done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 20:47:40 +00:00
										 |  |  | 	if [[ $install_type == "develop" ]]; then | 
					
						
							|  |  |  | 	  cp "docker-entrypoint-dev.sh" "$dir/entrypoint-dev.sh" | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-19 15:37:44 +00:00
										 |  |  | 	cp upgrade.exclude "$dir/" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	cp -rT .config "$dir/config" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-26 08:10:19 +00:00
										 |  |  |     travisEnvAmd64='\n    - env: VERSION='"$dockerName"' VARIANT='"$variant"' ARCH=amd64'"$travisEnvAmd64" | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 	for arch in i386 amd64; do | 
					
						
							| 
									
										
										
										
											2019-02-26 08:10:19 +00:00
										 |  |  | 		travisEnv='\n    - env: VERSION='"$dockerName"' VARIANT='"$variant"' ARCH='"$arch$travisEnv" | 
					
						
							| 
									
										
										
										
											2018-05-24 19:20:25 +00:00
										 |  |  | 	done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | find . -maxdepth 1 -type d -regextype sed -regex '\./[[:digit:]]\+\(\.\|\-\)[[:digit:]]\+\(-rc\|-dev\)\?' -exec rm -r '{}' \; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for version in "${versions[@]}"; do | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		for variant in "${variants[@]}"; do | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			create_variant "$version" | 
					
						
							|  |  |  | 		done | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # replace the fist '-' with ' ' | 
					
						
							|  |  |  | travisEnv="$(echo "$travisEnv" | sed '0,/-/{s/-/ /}')" | 
					
						
							|  |  |  | travisEnvAmd64="$(echo "$travisEnvAmd64" | sed '0,/-/{s/-/ /}')" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # update .travis.yml | 
					
						
							|  |  |  | travisAmd64="$(awk -v 'RS=\n\n' '$1 == "-" && $2 == "stage:" && $3 == "test" && $4 == "images" && $5 == "(amd64)" { $0 = "    - stage: test images (amd64)'"$travisEnvAmd64"'" } { printf "%s%s", $0, RS }' .travis.yml)" | 
					
						
							|  |  |  | echo "$travisAmd64" > .travis.yml | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | travisFull="$(awk -v 'RS=\n\n' '$1 == "-" && $2 == "stage:" && $3 == "test" && $4 == "images" && $5 == "(full)" { $0 = "    - stage: test images (full)'"$travisEnv"'" } { printf "%s%s", $0, RS }' .travis.yml)" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-08 19:47:56 +00:00
										 |  |  | echo "$travisFull" > .travis.yml |