make.sh 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #!/usr/bin/env bash
  2. # ------------------------------------------------------- #
  3. #
  4. # Skeleton for common build entry script for all elastic
  5. # clients. Needs to be adapted to individual client usage.
  6. #
  7. # Must be called: ./.ci/make.sh <target> <params>
  8. #
  9. # Version: 1.1.0
  10. #
  11. # Targets:
  12. # ---------------------------
  13. # assemble <VERSION> : build client artefacts with version
  14. # bump <VERSION> : bump client internals to version
  15. # codegen <VERSION> : generate endpoints
  16. # docsgen <VERSION> : generate documentation
  17. # examplegen : generate the doc examples
  18. # clean : clean workspace
  19. #
  20. # ------------------------------------------------------- #
  21. # ------------------------------------------------------- #
  22. # Bootstrap
  23. # ------------------------------------------------------- #
  24. script_path=$(dirname "$(realpath -s "$0")")
  25. repo=$(realpath "$script_path/../")
  26. # shellcheck disable=SC1090
  27. CMD=$1
  28. TASK=$1
  29. TASK_ARGS=()
  30. VERSION=$2
  31. STACK_VERSION=$VERSION
  32. set -euo pipefail
  33. product="elastic/elasticsearch-php"
  34. output_folder=".ci/output"
  35. codegen_folder=".ci/output"
  36. OUTPUT_DIR="$repo/${output_folder}"
  37. REPO_BINDING="${OUTPUT_DIR}:/sln/${output_folder}"
  38. mkdir -p "$OUTPUT_DIR"
  39. echo -e "\033[34;1mINFO:\033[0m PRODUCT ${product}\033[0m"
  40. echo -e "\033[34;1mINFO:\033[0m VERSION ${STACK_VERSION}\033[0m"
  41. echo -e "\033[34;1mINFO:\033[0m OUTPUT_DIR ${OUTPUT_DIR}\033[0m"
  42. # ------------------------------------------------------- #
  43. # Parse Command
  44. # ------------------------------------------------------- #
  45. case $CMD in
  46. clean)
  47. echo -e "\033[36;1mTARGET: clean workspace $output_folder\033[0m"
  48. rm -rfv "$output_folder"
  49. echo -e "\033[32;1mTARGET: clean - done.\033[0m"
  50. exit 0
  51. ;;
  52. assemble)
  53. if [ -v $VERSION ]; then
  54. echo -e "\033[31;1mTARGET: assemble -> missing version parameter\033[0m"
  55. exit 1
  56. fi
  57. echo -e "\033[36;1mTARGET: assemble artefact $VERSION\033[0m"
  58. TASK=release
  59. TASK_ARGS=("$VERSION" "$output_folder")
  60. ;;
  61. codegen)
  62. if [ -v $VERSION ]; then
  63. echo -e "\033[31;1mTARGET: codegen -> missing version parameter\033[0m"
  64. exit 1
  65. fi
  66. echo -e "\033[36;1mTARGET: codegen API v$VERSION\033[0m"
  67. TASK=codegen
  68. # VERSION is BRANCH here for now
  69. TASK_ARGS=("$VERSION" "$codegen_folder")
  70. ;;
  71. docsgen)
  72. if [ -v $VERSION ]; then
  73. echo -e "\033[31;1mTARGET: docsgen -> missing version parameter\033[0m"
  74. exit 1
  75. fi
  76. echo -e "\033[36;1mTARGET: generate docs for $VERSION\033[0m"
  77. TASK=codegen
  78. # VERSION is BRANCH here for now
  79. TASK_ARGS=("$VERSION" "$codegen_folder")
  80. ;;
  81. examplesgen)
  82. echo -e "\033[36;1mTARGET: generate examples\033[0m"
  83. TASK=codegen
  84. # VERSION is BRANCH here for now
  85. TASK_ARGS=("$VERSION" "$codegen_folder")
  86. ;;
  87. bump)
  88. if [ -v $VERSION ]; then
  89. echo -e "\033[31;1mTARGET: bump -> missing version parameter\033[0m"
  90. exit 1
  91. fi
  92. echo -e "\033[36;1mTARGET: bump to version $VERSION\033[0m"
  93. TASK=bump
  94. # VERSION is BRANCH here for now
  95. TASK_ARGS=("$VERSION")
  96. ;;
  97. *)
  98. echo -e "\nUsage:\n\t $CMD is not supported right now\n"
  99. exit 1
  100. esac
  101. # ------------------------------------------------------- #
  102. # Build Container
  103. # ------------------------------------------------------- #
  104. #echo -e "\033[34;1mINFO: building $product container\033[0m"
  105. #docker build --file .ci/Dockerfile --tag ${product} \
  106. # --build-arg USER_ID="$(id -u)" \
  107. # --build-arg GROUP_ID="$(id -g)" .
  108. # ------------------------------------------------------- #
  109. # Run the Container
  110. # ------------------------------------------------------- #
  111. #echo -e "\033[34;1mINFO: running $product container\033[0m"
  112. #docker run \
  113. # --env "DOTNET_VERSION" \
  114. # --name test-runner \
  115. # --volume $REPO_BINDING \
  116. # --rm \
  117. # $product \
  118. # /bin/bash -c "./build.sh $TASK ${TASK_ARGS[*]} && chown -R $(id -u):$(id -g) ."
  119. # ------------------------------------------------------- #
  120. # Post Command tasks & checks
  121. # ------------------------------------------------------- #
  122. if [[ "$CMD" == "assemble" ]]; then
  123. artefact_name="elasticsearch-php-${VERSION}"
  124. echo -e "\033[34;1mINFO: copy artefacts\033[0m"
  125. rsync -arv --exclude=.ci --exclude=.git --filter=':- .gitignore' "$PWD" "${output_folder}/."
  126. echo -e "\033[34;1mINFO: rename artefacts\033[0m"
  127. mv -v "${output_folder}/elasticsearch-php" "${output_folder}/${artefact_name}"
  128. echo -e "\033[34;1mINFO: build artefacts\033[0m"
  129. cd ./.ci/output && tar -czvf ${artefact_name}.tar.gz "${artefact_name}/." && cd -
  130. echo -e "\033[34;1mINFO: cleanup\033[0m"
  131. rm -Rf "${output_folder}/${artefact_name}"
  132. echo -e "\033[34;1mINFO: validate artefact\033[0m"
  133. proof=`ls ${output_folder}`
  134. if [ $proof == "${artefact_name}.tar.gz" ]; then
  135. echo -e "\033[32;1mTARGET: assemble - success: $artefact_name.tar.gz\033[0m"
  136. else
  137. echo -e "\033[31;1mTARGET: assemble failed, empty workspace!\033[0m"
  138. exit 1
  139. fi
  140. fi
  141. if [[ "$CMD" == "bump" ]]; then
  142. echo "TODO"
  143. fi
  144. if [[ "$CMD" == "codegen" ]]; then
  145. echo "TODO"
  146. fi
  147. if [[ "$CMD" == "docsgen" ]]; then
  148. echo "TODO"
  149. fi
  150. if [[ "$CMD" == "examplesgen" ]]; then
  151. echo "TODO"
  152. fi