#!/bin/bash # ref: https://github.com/kubedb/mysql/blob/master/hack GCR_PROJECT=tigerworks-kube clean() { rm -rf $SRC $BIN } inside_git_repo() { git rev-parse --is-inside-work-tree >/dev/null 2>&1 inside_git=$? if [ "$inside_git" -ne 0 ]; then echo "Not inside a git repository" exit 1 fi } clone() { if [ -x "$1" ]; then echo "Please specify url of repo to clone" exit 1 fi local url="$1" shift local folder="" if [ "$#" -eq 1 ]; then folder="$1" fi echo -e "\n" local cmd="git clone $url $folder" echo $cmd; $cmd } # http://stackoverflow.com/a/36979153/244009 checkout() { if [ -x "$1" ]; then echo "Please specify which branch to checkout" exit 1 fi inside_git_repo local cmd="git clean -xfd" echo $cmd; $cmd cmd="git fetch --all --prune" echo $cmd; $cmd cmd="git fetch --tags" echo $cmd; $cmd cmd="git checkout -f -B $1 origin/$1" echo $cmd; $cmd } apply_tag() { if [ -x "$1" ]; then echo "Please specify which tag to apply" exit 1 fi inside_git_repo local cmd="git tag -fa $1" echo $cmd; $cmd cmd="git push --tag -f" echo $cmd; $cmd } # Based on metadata() func in config.py detect_tag() { inside_git_repo # http://stackoverflow.com/a/1404862/3476121 git_tag=$(git describe --exact-match --abbrev=0 2>/dev/null || echo '') commit_hash=$(git rev-parse --verify HEAD) git_branch=$(git rev-parse --abbrev-ref HEAD) commit_timestamp=$(git show -s --format=%ct) if [ "$git_tag" != '' ]; then TAG=$git_tag TAG_STRATEGY='git_tag' elif [ "$git_branch" != 'master' ] && [ "$git_branch" != 'HEAD' ] && [[ "$git_branch" != release-* ]]; then TAG=$git_branch TAG_STRATEGY='git_branch' else hash_ver=$(git describe --tags --always --dirty) TAG="${hash_ver}" TAG_STRATEGY='commit_hash' fi echo "TAG = $TAG" echo "TAG_STRATEGY = $TAG_STRATEGY" echo "git_tag = $git_tag" echo "git_branch = $git_branch" echo "commit_hash = $commit_hash" echo "commit_timestamp = $commit_timestamp" # write TAG info to a file so that it can be loaded by a different command or script if [ $# -gt 0 ] && [ "$1" != '' ]; then cat >"$1" <.gitignore mkdir -p pv local cmd="docker run -d -P -it $privileged $net $extra_opts --name=$name $DOCKER_REGISTRY/$img:$TAG $docker_cmd" echo $cmd; $cmd } docker_sh() { img=$IMG if [ $# -eq 1 ]; then img=$1 fi name=$img-$(date +%s | sha256sum | base64 | head -c 8; echo) privileged="${PRIVILEGED_CONTAINER:-}" net="${DOCKER_NETWORK:-}" extra_opts="${EXTRA_DOCKER_OPTS:-}" local cmd="docker run -d -P -it $privileged $net $extra_opts --name=$name $DOCKER_REGISTRY/$img:$TAG" echo $cmd; $cmd cmd="docker exec -it $name bash" echo $cmd; $cmd } docker_rm() { local cmd="docker stop $(docker ps)" echo $cmd; $cmd local cmd="docker rm -f $(docker ps -a)" echo $cmd; $cmd } docker_rmi() { docker_rm || true local cmd="docker rmi -f $(docker images -a)" echo $cmd; $cmd }