build.sh 3.6 KB

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