summaryrefslogtreecommitdiffstats
path: root/linux-mvn-be.sh
blob: 234e2d938c948c0e40da0705c92694c84bd796a3 (plain)
1
mvn clean install -Pcatalog -pl catalog-be -am "$@"
reproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
#!/bin/bash

#function to provide help
#desc: this function provide help menu
#argument: -h for help, -p for path, -r for repository
#calling syntax: options

options() {
  cat <<EOF
Usage: $0 [PARAMs]
-h                  : help
-l (Location)           : path for searching values.yaml
                      [in case no path is provided then is will scan current directories for values.yml]
-r (Repository)     : name of image repository
                      [format [repository name/url]:(port)]
                      [in case no repository is provided then defualt image repository will be nexus3.onap.org:10001]
-u (User)           : user name for login
                      [in case no user name is provided then default user will be docker]
-p (Password)       : password for login
                      [in case no password is provided then default user will be docker]
EOF
}

#function to parse yaml file
#desc: this function convert yaml file to dotted notion
#argument: yaml file
#calling syntax: parse_yaml <yaml_file_name>

function parse_yaml {
   local prefix=$2
   local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
   sed -ne "s|^\($s\):|\1|" \
        -e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
        -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p"  $1 |
   awk -F$fs '{
      indent = length($1)/2;
      vname[indent] = $2;
      for (i in vname) {if (i > indent) {delete vname[i]}}
      if (length($3) > 0) {
         vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])(".")}
         printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3);
      }
   }'
}

#algorithmic steps
#start
#scan all values.yaml files
#parse yaml file into dotted format
#for each lines check there is image tag in line
#store image name and check next line for version information
#if in next line version is not present as a subtag then call docker pull with imageName
#if version is present in next line then call docker pull with imageName and imageVersion
#end


#start processing for finding images and version
IMAGE_TEXT="image"
IMAGE_VERSION_TEXT="Version"
LOCATION="."
VALUES_FILE_NAME="values.yaml"
IMAGE_REPOSITORY="nexus3.onap.org:10001"
USER_NAME="docker"
PASSWORD="docker"

#scan for options menu
while getopts ":h:l:r:u:p:" PARAM; do
  case $PARAM in
    h)
      options
      exit 1
      ;;
    l)
      LOCATION=${OPTARG}
      ;;
    r)
      IMAGE_REPOSITORY=${OPTARG}
      ;;
    u)
      USER_NAME=${OPTARG}
      ;;
    p)
      PASSWORD=${OPTARG}
      ;;
    ?)
      options
      exit
      ;;
  esac
done


#docker login to nexus repo
echo docker login -u $USER_NAME -p $PASSWORD $IMAGE_REPOSITORY
docker login -u $USER_NAME -p $PASSWORD $IMAGE_REPOSITORY

#scan all values.yaml files recursively
for filename in `find $LOCATION -name $VALUES_FILE_NAME`
do
        imageNameWithVersion=" ";
        #parse yaml files
        for line in  `parse_yaml $filename`
        do
                #skiping commented line
                if [[ ${line:0:1} != '#' ]]; then
                        #find all image subtag inside converted values.yaml file's lines
                        if echo $line | grep -q $IMAGE_TEXT ; then
                                #find imageName inside line
                                imageName=`echo $line | awk -F "=" '{print $2}'`
                                #remove attional prefix and postfix
                                imageNameFinal=`echo "$imageName" | sed -e 's/^"//' -e 's/"$//' `

                        	#check if line contain Version as a subtag in lines if yes then call docker pull with version
                                if echo $line | grep -q $IMAGE_VERSION_TEXT ; then
                                        echo docker pull "$imageNameWithVersion":"$imageNameFinal"
                                        docker pull $imageNameWithVersion:$imageNameFinal &
                                        imageNameWithVersion=" "
                                else
                                        #check Version is not in subtag and old scanned value is present then call docker pull without version
                                        if [ "$imageNameWithVersion" != " " ]; then
                                                echo docker pull "$imageNameWithVersion"
                                                docker pull $imageNameWithVersion &
                                                imageNameWithVersion=$imageNameFinal
                                        else
                                                imageNameWithVersion=$imageNameFinal
                                        fi
                                fi
                        fi
                fi
        done
done
# complete processing
echo "finished launching pulls"
#MAX_WAIT_INTERVALS=300
INTERVAL_COUNT=300
while [  $(ps -ef | grep docker | grep pull | grep -v $0 | wc -l) -gt 0 ]; do
  sleep 10
  INTERVAL_COUNT=$((INTERVAL_COUNT - 1))
  echo "waiting for last pull"
  if [ "$INTERVAL_COUNT" -eq 0 ]; then
    break
  fi
done