build.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/bash
  2. set -ex
  3. WORK_DIR=$(dirname $(readlink -f $0))
  4. HUE_SRC=$(realpath $WORK_DIR/../..)
  5. BUILD_DIR=$(realpath $HUE_SRC/../containerbuild$GBN)
  6. HUE_DIR=$WORK_DIR/hue
  7. APACHE_DIR=$WORK_DIR/huelb
  8. BASEHUE_DIR=$WORK_DIR/base/hue
  9. BASEHUELB_DIR=$WORK_DIR/base/huelb
  10. REGISTRY=${REGISTRY:-"docker.io/hortonworks"}
  11. HUEUSER="hive"
  12. compile_hue() {
  13. mkdir -p $BUILD_DIR
  14. cd $HUE_SRC
  15. PREFIX=$BUILD_DIR make install
  16. cd $BUILD_DIR/hue
  17. APPS=$(find apps -maxdepth 2 -name "src" -type d|cut -d"/" -f2|sort| sed 's/[^ ]* */apps\/&/g')
  18. ./build/env/bin/python tools/app_reg/app_reg.py --install $APPS --relative-paths
  19. bash tools/relocatable.sh
  20. }
  21. find_git_state() {
  22. cd $HUE_SRC
  23. export GBRANCH=$(git ls-remote --get-url)"/commits/"$(git rev-parse --abbrev-ref HEAD)
  24. export GSHA=$(git ls-remote --get-url)"/commit/"$(git rev-list --no-walk HEAD)
  25. export VERSION=$(grep "VERSION=" VERSION | cut -d"=" -f2 | cut -d'"' -f2)
  26. }
  27. subst_var() {
  28. file_name=$1
  29. if [[ -e $file_name ]]; then
  30. if [[ "$file_name" == *"_template" ]]; then
  31. out_name="${file_name::-9}.conf"
  32. fi
  33. fi
  34. eval "cat <<EOF
  35. $(<$file_name)
  36. EOF
  37. " | tee $out_name 2> /dev/null
  38. }
  39. docker_hue_build() {
  40. export HUE_USER="hive"
  41. export HUE_CONF="/etc/hue"
  42. export HUE_HOME="/opt/${HUEUSER}"
  43. export HUE_CONF_DIR="${HUE_CONF}/conf"
  44. export HUE_LOG_DIR="/var/log/${HUEUSER}"
  45. export UUID_GEN=$(uuidgen | cut -d"-" -f5)
  46. cd $HUE_DIR
  47. cp -a $BUILD_DIR/hue $HUE_DIR
  48. rm -f $HUE_DIR/hue/desktop/conf/*
  49. for f in $(find $HUE_DIR/supervisor-files -name "*_template"); do
  50. subst_var $f
  51. done
  52. docker build -f $HUE_DIR/Dockerfile -t ${REGISTRY}/hue:$GBN \
  53. --build-arg GBN=$GBN \
  54. --build-arg GSHA="$GSHA" \
  55. --build-arg GBRANCH=$GBRANCH \
  56. --build-arg VERSION=$VERSION \
  57. --build-arg HUEUSER=$HUEUSER \
  58. --build-arg HUE_CONF=$HUE_CONF \
  59. .
  60. }
  61. docker_huelb_build() {
  62. export HUE_USER="hive"
  63. export HUE_CONF="/etc/hue"
  64. export HUE_HOME="/opt/${HUEUSER}"
  65. export HUE_CONF_DIR="${HUE_CONF}/conf"
  66. export HUE_LOG_DIR="/var/log/${HUEUSER}"
  67. cd $APACHE_DIR
  68. cp -a $BUILD_DIR/hue/build/static $APACHE_DIR
  69. for f in $(find $APACHE_DIR -name "*_template"); do
  70. subst_var $f
  71. done
  72. docker build -f $APACHE_DIR/Dockerfile -t ${REGISTRY}/huelb:$GBN \
  73. --build-arg GBN=$GBN \
  74. --build-arg GSHA="$GSHA" \
  75. --build-arg GBRANCH=$GBRANCH \
  76. --build-arg VERSION=$VERSION \
  77. --build-arg HUEUSER=$HUEUSER \
  78. --build-arg HUE_CONF=$HUE_CONF \
  79. .
  80. }
  81. build_huebase() {
  82. cd $BASEHUE_DIR
  83. docker build -f $BASEHUE_DIR/Dockerfile -t ${REGISTRY}/huebase_centos:7 .
  84. docker tag ${REGISTRY}/huebase_centos:7 huebase_centos:7
  85. docker push ${REGISTRY}/huebase_centos:7
  86. docker pull ${REGISTRY}/huebase_centos:7
  87. }
  88. build_huelbbase() {
  89. cd $BASEHUELB_DIR
  90. docker build -f $BASEHUELB_DIR/Dockerfile -t ${REGISTRY}/huelb_httpd:2.4 .
  91. docker tag ${REGISTRY}/huelb_httpd:2.4 huelb_httpd:2.4
  92. docker push ${REGISTRY}/huelb_httpd:2.4
  93. docker pull ${REGISTRY}/huelb_httpd:2.4
  94. }
  95. pull_base_images() {
  96. set +e
  97. docker pull ${REGISTRY}/huebase_centos:7
  98. if [[ $? != 0 ]]; then
  99. build_huebase
  100. fi
  101. docker tag ${REGISTRY}/huebase_centos:7 huebase_centos:7
  102. docker pull ${REGISTRY}/huelb_httpd:2.4
  103. if [[ $? != 0 ]]; then
  104. build_huelbbase
  105. fi
  106. docker tag ${REGISTRY}/huelb_httpd:2.4 huelb_httpd:2.4
  107. set -e
  108. }
  109. compile_hue
  110. find_git_state
  111. pull_base_images
  112. docker_hue_build
  113. docker_huelb_build