docker_pull() { repo=<%= data[:repo] %> tag=<%= data[:tag] %> docker pull $repo:$tag } worked=1 for attempt in {1..200}; do [[ $worked != 0 ]] || break docker_pull && worked=0 || (log "fetch: attempt $attempt failed, sleeping 30"; sleep 30) done [[ $worked != 0 ]] && fatal "failed to import image" log "fetch: successfully imported image"