Guest User

Untitled

a guest
Mar 18th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. COMPANY_REGISTRY="hub.company_name.com"
  4.  
  5. set -e
  6. script() {
  7. [ "$#" -lt 3 ] && ( usage && exit 0 ) || main "$@"
  8. }
  9.  
  10. function main {
  11. work_mode=$2
  12. target_box=$1
  13. source_dir=$3
  14.  
  15. if [ "$work_mode" != "dev" ] && [ "$work_mode" != "CI" ]; then
  16. echo "work_mode should be \"dev\" or \"CI\""
  17. echo "\"dev\" - developers mode, run interractive bash"
  18. echo "\"CI\" - continuous integration mode"
  19. exit 1
  20. fi
  21.  
  22. if [ -z "$3" ]; then
  23. echo "You should specify path to directory with sources"
  24. echo "It may be absolute path or relative"
  25. exit 1
  26. fi
  27.  
  28. resolved_dir=$(readlink -f $source_dir)
  29.  
  30. if [ ! -d "$resolved_dir" ]; then
  31. echo "\"$resolved_dir\" doesn't exit!"
  32. exit 1
  33. fi
  34.  
  35. echo "model_name: ${target_box}"
  36. echo "source_dir: ${resolved_dir}"
  37. echo "work_mode: ${work_mode}"
  38.  
  39. if ([ "$target_box" = "mag256" ] || [ "$target_box" = "mag257" ]); then
  40. docker_image_name="${COMPANY_REGISTRY}:5000/chipmaker_1/box_name_1:latest"
  41. SOME_VARIABLE="some_value"
  42. ADDITIONAL_OPTIONS="SOME_VARIABLE=${SOME_VARIABLE} SOME_VARIABLE2='blabla'"
  43. elif ([ "$target_box" = "mag324" ] || [ "$target_box" = "mag322" ] || [ "$target_box" = "mag325" ]); then
  44. docker_image_name="{COMPANY_REGISTRY}:5000/chipmaker_2/box_name_2:latest"
  45. ADDITIONAL_OPTIONS=""
  46. elif [ "$target_box" = "pc" ]; then
  47. docker_image_name="{COMPANY_REGISTRY}:5000/x86/pc-env:latest"
  48. else
  49. echo "unknown model name: "${target_box}
  50. exit 1
  51. fi
  52.  
  53. hint_msg=$(echo -e "\
  54. ################################################################################\n\
  55. # Will mount host path \"${resolved_dir}\" to container path \"${resolved_dir}\"\n\
  56. # Will run \"make ${make_target}\" inside \"${resolved_dir}\" in the container \n\
  57. # The source is available at \"${resolved_dir}\". \n\
  58. # Type "Ctrl+D" to exit from container. \n\
  59. # root password: \"pas\" \n\
  60. ################################################################################\n\
  61. ")
  62.  
  63. if [ "$work_mode" = "CI" ]; then
  64. bash_cmd=$(echo -e "\
  65. echo '${hint_msg}' \
  66. && cd ${resolved_dir} \
  67. && make clean \
  68. && make ${ADDITIONAL_OPTIONS} \
  69. ")
  70. else
  71. additional_docker_options="-it"
  72.  
  73. if [ -z "$5" ]; then
  74. bash_cmd=$(echo -e "\
  75. echo '${hint_msg}' \
  76. && cd ${resolved_dir} \
  77. && bash \
  78. ")
  79. else
  80. bash_cmd=$(echo -e "\
  81. echo '${hint_msg}' \
  82. && cd ${resolved_dir} \
  83. && $5 \
  84. ")
  85. fi
  86. fi
  87.  
  88. containers_to_del=$(docker ps -a -f status=exited | grep ${COMPANY_REGISTRY} | awk '{ print $1 }')
  89. if [ ! -z "${containers_to_del}" ]; then
  90. echo ""
  91. echo "Will remove ${COMPANY_REGISTRY}* stopped containers:"
  92. echo "`docker ps -a -f status=exited | grep ${COMPANY_REGISTRY} | awk '{ print $1, $2 }'`"
  93. echo ""
  94. docker rm $(docker ps -a -f status=exited | grep ${COMPANY_REGISTRY} | awk '{ print $1 }') || true #remove stopped containers
  95. fi
  96.  
  97. imgs_for_del=$(docker images -f "dangling=true" -q)
  98. if [ ! -z "${imgs_for_del}" ]; then
  99. echo "Will remove dangling layers"
  100. docker rmi $(docker images -f "dangling=true" -q) || true #clean docker dangled images with <none>:<none>
  101. echo ""
  102. fi
  103. docker pull ${docker_image_name} || true
  104. docker run --rm ${additional_docker_options} \
  105. -v ${resolved_dir}:${resolved_dir} \
  106. -v $HOME/.gitconfig:/home/docker-user/.gitconfig:ro \
  107. --net=host -v $HOME/.ssh:/home/docker-user/.ssh:ro \
  108. -e LOCAL_USER_ID=`id -u ${USER}` \
  109. ${docker_image_name} \
  110. bash -c "${bash_cmd}"
  111. }
  112.  
  113. function usage {
  114. self_script_name="$(basename "$(test -L "$0" && readlink "$0" || echo "$0")")"
  115. echo
  116. echo "Usage: "
  117. echo " ${self_script_name} target_box dev|CI path_to_stbapp path_to_platform_lib"
  118. echo "Examples: "
  119. echo " ${self_script_name} mag425 dev dir_with_src"
  120. echo " ${self_script_name} mag256 CI dir_with_src ----> run auto build"
  121. echo " ${self_script_name} mag425 dev dir_with_src make|ls|echo \"ha-ha\""
  122. echo
  123. }
  124.  
  125. script "$@"
Add Comment
Please, Sign In to add comment