Add cache tag warnings

This commit is contained in:
sn0w 2019-04-12 00:56:10 +02:00
parent 2b23f41f56
commit f19a0c18f5
No known key found for this signature in database
GPG Key ID: DDEDFB9D3FA15727

57
pleroma
View File

@ -114,7 +114,7 @@ action__build() {
local cacheTag="" local cacheTag=""
# Alternative 1: Get tags or branches from git (if installed) # Alternative 1: Get tags or branches from git (if installed)
if [[ -z "$cacheTag" ]] && has_command git; then if [[ -z "$cacheTag" ]] && has_command git && has_command grep && has_command awk; then
set +o pipefail set +o pipefail
local resolvedHash local resolvedHash
resolvedHash="$(git ls-remote $GITLAB_URI/$ENDPOINT_REPO | grep "/$PLEROMA_VERSION" | awk '{ print $1 }')" resolvedHash="$(git ls-remote $GITLAB_URI/$ENDPOINT_REPO | grep "/$PLEROMA_VERSION" | awk '{ print $1 }')"
@ -125,25 +125,68 @@ action__build() {
fi fi
fi fi
# Alternative 2: Current time with date or awk # Alternative 2: Current time
if [[ -z "$cacheTag" ]] && has_command date; then if [[ -z "$cacheTag" ]] && has_command date; then
echo ""
echo "WARNING WARNING WARNING"
echo ""
echo "You don't have git installed, so we cannot know if the cache is up to date."
echo "We'll use the current unix timestamp as a replacement value,"
echo "but this means that your cache is always 'stale' and docker wastes your time."
echo ""
echo "WARNING WARNING WARNING"
echo ""
echo "Waiting 5 seconds to make sure you notice this..."
sleep 5
cacheTag="$(date '+%s')" cacheTag="$(date '+%s')"
fi fi
if [[ -z "$cacheTag" ]] && has_command awk; then # Alternative 3: Random number with awk
cacheTag="$(awk 'BEGIN { srand(); print srand() }')" if [[ -z "$cacheTag" ]] && [[ -n "$RANDOM" ]]; then
echo ""
echo "WARNING WARNING WARNING"
echo ""
echo "You don't have git installed, so we cannot know if the cache is up to date."
echo "Additionally you don't have \`date\` available. (What kind of pc is this?!)"
echo "This means we cannot set any unique value as cache tag."
echo ""
echo "We'll generate a random number to try and mark the cache as 'always stale'."
echo "Hoewever: Depending on your shell this might not always work, or only work a few times."
echo ""
echo "You should *really* get this fixed unless you know what you're doing."
echo ""
echo "WARNING WARNING WARNING"
echo ""
echo "Waiting 5 seconds to make sure you notice this..."
sleep 5
cacheTag="$RANDOM"
fi fi
# Last resort: Constant value, user will need to run `docker system prune` # Last resort: Constant value
if [[ -z "$cacheTag" ]]; then if [[ -z "$cacheTag" ]]; then
echo "" echo ""
echo "Warning: Cannot set a reliably unique cache tag." echo "WARNING WARNING WARNING"
echo " You may be running outdated code!"
echo "" echo ""
echo "You don't have git installed, so we cannot know if the cache is up to date."
echo "Additionally you don't have \`date\` available, and your shell refuses to generate random numbers."
echo "This means we cannot set any unique or random value as cache tag."
echo "Consequently your cache will always be 'fresh' and you never get updates."
echo ""
echo "You can work around this by running \`docker system prune\` to throw away the build cache,"
echo "but you should *really* get this fixed unless you know what you're doing."
echo ""
echo "WARNING WARNING WARNING"
echo ""
echo "Waiting 5 seconds to make sure you notice this..."
sleep 5
cacheTag="broken-host-env" cacheTag="broken-host-env"
fi fi
echo -e "#> (Re-)Building with cache tag \`${cacheTag}\`...\n"
docker_compose build --build-arg __CACHE_TAG="$cacheTag" server docker_compose build --build-arg __CACHE_TAG="$cacheTag" server
} }