79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
#=========================================
 | 
						|
# Author   : colben
 | 
						|
#=========================================
 | 
						|
 | 
						|
set -euo pipefail
 | 
						|
export LANG=en_US.UTF-8
 | 
						|
 | 
						|
[ 'x86_64' == "$(uname -m)" ] && ARCH='' || ARCH="-$(uname -m)"
 | 
						|
ROOT_DIR="$(cd $(dirname $0) && pwd)"
 | 
						|
IMAGE="harbor.colben.cn/general/ops$ARCH:latest"
 | 
						|
 | 
						|
if [ -t 0 ]; then
 | 
						|
    function Print { echo -e "\033[36;1m$(date +'[%F %T]')\033[32;1m $*\033[0m"; }
 | 
						|
    function Warn { echo -e "\033[36;1m$(date +'[%F %T]')\033[33;1m $*\033[0m"; }
 | 
						|
    function Error { echo -e "\033[36;1m$(date +'[%F %T]')\033[31;1m $*\033[0m"; exit 1; }
 | 
						|
else
 | 
						|
    function Print { echo -e "$(date +'[%F %T INFO]') $*"; }
 | 
						|
    function Warn { echo -e "$(date +'[%F %T WARN]') $*"; }
 | 
						|
    function Error { echo -e "$(date +'[%F %T ERROR]') $*"; exit 1; }
 | 
						|
fi
 | 
						|
 | 
						|
function Quit {
 | 
						|
    local exitCode=$?
 | 
						|
    [ 0 -ne $exitCode ] && Error Failed to build or push image!
 | 
						|
    [ -z "${END:-}" ] && echo && Error Interrupted manually!
 | 
						|
    Print Succeeded to build and push image.
 | 
						|
}
 | 
						|
 | 
						|
function YesOrNo {
 | 
						|
    Warn $*
 | 
						|
    local sw=
 | 
						|
    while :; do
 | 
						|
        read -p '(Yes/No/Quit) ' -n1 sw
 | 
						|
        [[ "$sw" =~ ^Y|y$ ]] && echo && return 0
 | 
						|
        [[ "$sw" =~ ^N|n$ ]] && echo && return 1
 | 
						|
        [[ "$sw" =~ ^Q|q$ ]] && echo && exit 0
 | 
						|
        [ -n "$sw" ] && echo
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
function Update {
 | 
						|
    Warn Preparing maven ...
 | 
						|
    cd $ROOT_DIR
 | 
						|
    rm -rf ADD && mkdir ADD
 | 
						|
    cd ADD
 | 
						|
    tar zxf $(ls /release/RUNTIME/apache-maven-*-bin.tar.gz|tail -1)
 | 
						|
    mv apache-maven-3.6.3 maven
 | 
						|
    Warn Preparing ssh host keys ...
 | 
						|
    cp -af /etc/ssh/ssh_host_* ./
 | 
						|
    chmod 0600 ssh_host_*_key
 | 
						|
    Warn Preparing ssh rsa ...
 | 
						|
    cp -af /root/.ssh/{id_rsa,id_rsa.pub} ./
 | 
						|
    chmod 0600 id_rsa
 | 
						|
}
 | 
						|
 | 
						|
function Build {
 | 
						|
    local yn
 | 
						|
    cd $ROOT_DIR
 | 
						|
    docker images --format='{{.Repository}}:{{.Tag}}' | grep "^$IMAGE$" \
 | 
						|
        && Warn Removing image $IMAGE ... \
 | 
						|
        && docker rmi $IMAGE
 | 
						|
    Warn Building image: $IMAGE ...
 | 
						|
    docker build --force-rm --build-arg ARCH="$ARCH" -t $IMAGE .
 | 
						|
    YesOrNo Push image: $IMAGE? && docker push $IMAGE
 | 
						|
}
 | 
						|
 | 
						|
function Main {
 | 
						|
    trap Quit EXIT
 | 
						|
    Update
 | 
						|
    Build
 | 
						|
    END=1
 | 
						|
}
 | 
						|
 | 
						|
# Start here
 | 
						|
Main
 | 
						|
 |