-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
smaller improvements to setup.sh (#153)
* replace bash function to list docker tags with https://github.com/genuinetools/reg/ * this depends on new release in genuinetools/reg#186 to fully function * update docker version * fix version.sh to also show versions from repos defined in .env * add script to list available tags and update values in .env * define default values for all version vars * add previously missing containers * use command instead of hash in update env script * use a custom select function instead shell builtin (since it does not handle default values) * add setup-update-tag in test.exp
- Loading branch information
Showing
6 changed files
with
149 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,12 @@ | ||
FROM docker:18.09.1 | ||
FROM docker:18.09.6 | ||
ENV COMPOSE_VERSION "1.23.2" | ||
ENV REG_VERSION "0.16.0" | ||
RUN apk add --no-cache bash curl expect make nano jq py-pip | ||
RUN pip install --no-cache-dir docker-compose==${COMPOSE_VERSION} | ||
# the 0.16.0 release of reg has a bug that breaks loading tags from the docker hub. | ||
# issue is fixed in master, but not in a release. | ||
# rel https://github.com/genuinetools/reg/issues/186 | ||
RUN curl -fSL "https://github.com/genuinetools/reg/releases/download/v$REG_VERSION/reg-linux-amd64" -o "/usr/local/bin/reg" \ | ||
&& chmod a+x "/usr/local/bin/reg" | ||
WORKDIR /kopano-docker | ||
CMD ["bash"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
#!/bin/bash | ||
|
||
set -euo pipefail | ||
IFS=$'\n\t' | ||
|
||
if ! command -v reg > /dev/null; then | ||
echo "Please install reg in order to run this script." | ||
exit 1 | ||
fi | ||
|
||
if [ ! -e ./.env ]; then | ||
echo "please run setup.sh first" | ||
exit 1 | ||
fi | ||
|
||
# this is a kind of ugly hack to be able to source the env file | ||
# this is sadly needed since postfix in https://github.com/tomav/docker-mailserver/ cannot deal with quoted values | ||
tmpfile=$(mktemp /tmp/kopano-docker-env.XXXXXX) | ||
cp ./.env "$tmpfile" | ||
sed -i '/LDAP_QUERY_FILTER/s/^/#/g' "$tmpfile" | ||
sed -i '/SASLAUTHD_LDAP_FILTER/s/^/#/g' "$tmpfile" | ||
# shellcheck disable=SC1090 | ||
source "$tmpfile" | ||
|
||
# define a default docker_repo in case its not in .env | ||
docker_repo=${docker_repo:-zokradonh} | ||
|
||
docker_tag_search () { | ||
image="$1" | ||
results=$(reg tags "$image" 2> /dev/null) | ||
echo "$results" | xargs -n1 | sort -ru | ||
} | ||
|
||
# function from https://stackoverflow.com/a/42790579/4754613 | ||
selectWithDefault() { | ||
|
||
local item i=0 numItems=$# | ||
|
||
# Print numbered menu items, based on the arguments passed. | ||
for item; do # Short for: for item in "$@"; do | ||
printf '%s\n' "$((++i))) $item" | ||
done >&2 # Print to stderr, as `select` does. | ||
|
||
# Prompt the user for the index of the desired item. | ||
while :; do | ||
printf %s "${PS3-#? }" >&2 # Print the prompt string to stderr, as `select` does. | ||
read -r index | ||
# Make sure that the input is either empty or that a valid index was entered. | ||
[[ -z $index ]] && break # empty input | ||
(( index >= 1 && index <= numItems )) 2>/dev/null || { echo "Invalid selection. Please try again." >&2; continue; } | ||
break | ||
done | ||
|
||
# Output the selected item, if any. | ||
[[ -n $index ]] && printf %s "${@: index:1}" | ||
} | ||
|
||
update_env_file () { | ||
varname="$1" | ||
varvalue="$2" | ||
if ! grep -q "$varname" ./.env; then | ||
echo "$varname=$varvalue" >> ./.env | ||
else | ||
sed -i "/$varname/c $varname=$varvalue" ./.env | ||
fi | ||
} | ||
|
||
tag_question () { | ||
containername="$1" | ||
value_default="$2" | ||
description="$3" | ||
echo "Which tag do you want to use for $description? [$value_default]" | ||
echo "Available tags in $docker_repo/$containername/: " | ||
set +e # do not exit when new_value is empty | ||
# shellcheck disable=SC2046 | ||
new_value=$(selectWithDefault $(docker_tag_search "$docker_repo/$containername")) | ||
set -e | ||
return_value=${new_value:-$value_default} | ||
} | ||
|
||
echo "Please be aware that downgrading to an older version could result in failure to start!" | ||
|
||
tag_question kopano_core "${CORE_VERSION:-latest}" "Kopano Core components" | ||
update_env_file CORE_VERSION "$return_value" | ||
|
||
tag_question kopano_webapp "${WEBAPP_VERSION:-latest}" "Kopano WebApp" | ||
update_env_file WEBAPP_VERSION "$return_value" | ||
|
||
tag_question kopano_web "${KWEB_VERSION:-latest}" "reverse proxy" | ||
update_env_file KWEB_VERSION "$return_value" | ||
|
||
tag_question kopano_zpush "${ZPUSH_VERSION:-latest}" "Z-Push" | ||
update_env_file ZPUSH_VERSION "$return_value" | ||
|
||
tag_question kopano_kdav "${KDAV_VERSION:-latest}" "kDAV" | ||
update_env_file KDAV_VERSION "$return_value" | ||
|
||
tag_question kopano_konnect "${KONNECT_VERSION:-latest}" "Kopano Konnect" | ||
update_env_file KONNECT_VERSION "$return_value" | ||
|
||
tag_question kopano_kwmserver "${KWM_VERSION:-latest}" "Kopano Kwmserver" | ||
update_env_file KWM_VERSION "$return_value" | ||
|
||
tag_question kopano_meet "${MEET_VERSION:-latest}" "Kopano Meet" | ||
update_env_file MEET_VERSION "$return_value" | ||
|
||
tag_question kopano_scheduler "${SCHEDULER_VERSION:-latest}" "Scheduler" | ||
update_env_file SCHEDULER_VERSION "$return_value" | ||
|
||
tag_question kopano_ssl "${SSL_VERSION:-latest}" "SSL helper container" | ||
update_env_file SSL_VERSION "$return_value" | ||
|
||
tag_question kopano_ldap "${LDAP_VERSION:-latest}" "LDAP container" | ||
update_env_file LDAP_VERSION "$return_value" | ||
|
||
if [ -e "$tmpfile" ]; then | ||
rm "$tmpfile" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,3 +16,13 @@ expect { | |
} | ||
eof | ||
} | ||
|
||
spawn "./setup-update-tag.sh" | ||
|
||
expect { | ||
"#?" { | ||
send "\r" | ||
exp_continue | ||
} | ||
eof | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters