X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Freleng%2Fdocker-deploy.sh;h=1e8357717c2447436ece0d18a6e0c91bc685118a;hb=6f2febadc9daa43df1c0a663ffa52c2b6bdebe25;hp=b3b930fc4636525ceafabef8674e7cd39d19dd65;hpb=0c1d6689656da269d9020e55e81f215d6f5a05a2;p=releng.git diff --git a/jjb/releng/docker-deploy.sh b/jjb/releng/docker-deploy.sh index b3b930fc4..1e8357717 100644 --- a/jjb/releng/docker-deploy.sh +++ b/jjb/releng/docker-deploy.sh @@ -16,86 +16,137 @@ # specific language governing permissions and limitations * # under the License. * -# Assigning Variables + command=$1 url=$2 +module=$3 + +REPO="opnfv" +latest_image=$REPO/$module:latest +old_image=$REPO/$module:old +latest_container_name=$module +old_container_name=$module"_old" +latest_container_id= +old_container_id= +new_start_container= + +function DEBUG() { + echo `date "+%Y-%m-%d %H:%M:%S.%N"` ": $1" +} -function check() { - - # Verify hosted +function check_connectivity() { + # check update status via test the connectivity of provide url sleep 5 cmd=`curl -s --head --request GET ${url} | grep '200 OK' > /dev/null` rc=$? - echo $rc - - if [[ $rc == 0 ]] - then + DEBUG $rc + if [[ $rc == 0 ]]; then return 0 else return 1 fi - } -echo "Getting contianer Id of the currently running one" -contId=$(sudo docker ps | grep "opnfv/testapi:latest" | awk '{print $1}') -echo "Pulling the latest image" -sudo docker pull opnfv/testapi:latest +function pull_latest_image() { + DEBUG "pull latest image $latest_image" + docker pull $latest_image +} -echo "Deleting old containers of opnfv/testapi:old" -sudo docker ps -a | grep "opnfv/testapi" | grep "old" | awk '{print $1}' | xargs -r sudo docker rm -f +function get_latest_running_container() { + latest_container_id=`docker ps -q --filter name=^/$latest_container_name$` +} -echo "Deleting old images of opnfv/testapi:latest" -sudo docker images | grep "opnfv/testapi" | grep "old" | awk '{print $3}' | xargs -r sudo docker rmi -f +function get_old_running_container() { + old_container_id=`docker ps -q --filter name=^/$old_container_name$` +} +function delete_old_image() { + DEBUG "delete old image: $old_image" + docker rmi -f $old_image +} -if [[ -z "$contId" ]] -then - echo "No running testapi container" +function delete_old_container() { + DEBUG "delete old container: $old_container_name" + docker ps -a -q --filter name=^/$old_container_name$ | xargs docker rm -f &>/dev/null +} - echo "Removing stopped testapi containers in the previous iterations" - sudo docker ps -f status=exited | grep "opnfv_testapi" | awk '{print $1}' | xargs -r sudo docker rm -f -else - echo $contId +function delete_latest_container() { + DEBUG "delete latest container: $module" + docker ps -a -q --filter name=^/$latest_container_name$ | xargs docker rm -f &>/dev/null +} - echo "Get the image id of the currently running conatiner" - currImgId=$(sudo docker ps | grep "$contId" | awk '{print $2}') - echo $currImgId +function delete_latest_image() { + DEBUG "delete latest image: $REPO/$module:latest" + docker rmi -f $latest_image +} - if [[ -z "$currImgId" ]] - then - echo "No image id found for the container id" - exit 1 - fi +function change_image_tag_2_old() { + DEBUG "change image tag 2 old" + docker tag $latest_image $old_image + docker rmi -f $latest_image +} - echo "Changing current image tag to old" - sudo docker tag "$currImgId" opnfv/testapi:old +function mark_latest_container_2_old() { + DEBUG "mark latest container to be old" + docker rename "$latest_container_name" "$old_container_name" +} - echo "Removing stopped testapi containers in the previous iteration" - sudo docker ps -f status=exited | grep "opnfv_testapi" | awk '{print $1}' | xargs -r sudo docker rm -f +function stop_old_container() { + DEBUG "stop old container" + docker stop "$old_container_name" +} - echo "Renaming the running container name to opnfv_testapi as to identify it." - sudo docker rename $contId opnfv_testapi +function run_latest_image() { + new_start_container=`$command` + DEBUG "run latest image: $new_start_container" +} - echo "Stop the currently running container" - sudo docker stop $contId +get_latest_running_container +get_old_running_container + +if [[ ! -z $latest_container_id ]]; then + DEBUG "latest container is running: $latest_container_id" + delete_old_container + delete_old_image + change_image_tag_2_old + mark_latest_container_2_old + pull_latest_image + stop_old_container + run_latest_image + +elif [[ ! -z $old_container_id ]]; then + DEBUG "old container is running: $old_container_id" + delete_latest_container + delete_latest_image + pull_latest_image + stop_old_container + run_latest_image +else + DEBUG "no container is running" + delete_old_container + delete_old_image + delete_latest_container + delete_latest_image + pull_latest_image + run_latest_image fi -echo "Running a container with the new image" -$command:latest - -if check; then - echo "TestResults Hosted." +if check_connectivity; then + DEBUG "CONGRATS: $module update successfully" else - echo "TestResults Hosting Failed" - if [[ $(sudo docker images | grep "opnfv/testapi" | grep "old" | awk '{print $3}') ]]; then - echo "Running old Image" - $command:old - exit 1 + DEBUG "ATTENTION: $module update failed" + id=`docker ps -a -q --filter name=^/$old_container_name$` + if [[ ! -z $id ]]; then + DEBUG "start old container instead" + docker stop $new_start_container + docker start $id + fi + if ! check_connectivity; then + DEBUG "BIG ISSUE: no container is running normally" fi + exit 1 fi -# Echo Images and Containers -sudo docker images -sudo docker ps -a +docker images +docker ps -a