Nessuna descrizione

build-images.sh 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #!/bin/bash
  2. # Wazuh package generator
  3. # Copyright (C) 2023, Wazuh Inc.
  4. #
  5. # This program is a free software; you can redistribute it
  6. # and/or modify it under the terms of the GNU General Public
  7. # License (version 2) as published by the FSF - Free Software
  8. # Foundation.
  9. IMAGE_TAG=4.14.3
  10. WAZUH_CURRENT_VERSION=$(curl --silent https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '["]tag_name["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 2- | sed -e 's/\.//g')
  11. WAZUH_REGISTRY=docker.io
  12. WAZUH_IMAGE_VERSION="4.14.3"
  13. WAZUH_TAG_REVISION="1"
  14. WAZUH_DEV_STAGE=""
  15. FILEBEAT_MODULE_VERSION="0.5"
  16. # -----------------------------------------------------------------------------
  17. trap ctrl_c INT
  18. clean() {
  19. exit_code=$1
  20. exit ${exit_code}
  21. }
  22. ctrl_c() {
  23. clean 1
  24. }
  25. # -----------------------------------------------------------------------------
  26. build() {
  27. WAZUH_VERSION="$(echo $WAZUH_IMAGE_VERSION | sed -e 's/\.//g')"
  28. FILEBEAT_TEMPLATE_BRANCH="${WAZUH_IMAGE_VERSION}"
  29. WAZUH_FILEBEAT_MODULE="wazuh-filebeat-${FILEBEAT_MODULE_VERSION}.tar.gz"
  30. WAZUH_UI_REVISION="${WAZUH_TAG_REVISION}"
  31. if [ "${WAZUH_DEV_STAGE}" ];then
  32. FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}-${WAZUH_DEV_STAGE,,}"
  33. IMAGE_TAG="${WAZUH_IMAGE_VERSION}-${WAZUH_DEV_STAGE,,}"
  34. if ! curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then
  35. echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}"
  36. clean 1
  37. fi
  38. else
  39. if curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/v${FILEBEAT_TEMPLATE_BRANCH}"; then
  40. FILEBEAT_TEMPLATE_BRANCH="v${FILEBEAT_TEMPLATE_BRANCH}"
  41. IMAGE_TAG="${WAZUH_IMAGE_VERSION}"
  42. elif curl --output /dev/null --silent --head --fail "https://github.com/wazuh/wazuh/tree/${FILEBEAT_TEMPLATE_BRANCH}"; then
  43. FILEBEAT_TEMPLATE_BRANCH="${FILEBEAT_TEMPLATE_BRANCH}"
  44. IMAGE_TAG="${WAZUH_IMAGE_VERSION}"
  45. else
  46. echo "The indicated branch does not exist in the wazuh/wazuh repository: ${FILEBEAT_TEMPLATE_BRANCH}"
  47. clean 1
  48. fi
  49. fi
  50. echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > ../.env
  51. echo WAZUH_IMAGE_VERSION=$WAZUH_IMAGE_VERSION >> ../.env
  52. echo WAZUH_TAG_REVISION=$WAZUH_TAG_REVISION >> ../.env
  53. echo FILEBEAT_TEMPLATE_BRANCH=$FILEBEAT_TEMPLATE_BRANCH >> ../.env
  54. echo WAZUH_FILEBEAT_MODULE=$WAZUH_FILEBEAT_MODULE >> ../.env
  55. echo WAZUH_UI_REVISION=$WAZUH_UI_REVISION >> ../.env
  56. echo WAZUH_REGISTRY=$WAZUH_REGISTRY >> ../.env
  57. echo IMAGE_TAG=$IMAGE_TAG >> ../.env
  58. set -a
  59. source ../.env
  60. set +a
  61. if [ "${MULTIARCH}" ];then
  62. docker buildx bake \
  63. --file build-images.yml \
  64. --push \
  65. --set *.platform=linux/amd64,linux/arm64 \
  66. --no-cache || clean 1
  67. else
  68. docker buildx bake \
  69. --file build-images.yml \
  70. --load \
  71. --no-cache || clean 1
  72. fi
  73. return 0
  74. }
  75. # -----------------------------------------------------------------------------
  76. help() {
  77. echo
  78. echo "Usage: $0 [OPTIONS]"
  79. echo
  80. echo " -d, --dev <ref> [Optional] Set the development stage you want to build, example rc4 or beta1, not used by default."
  81. echo " -f, --filebeat-module <ref> [Optional] Set Filebeat module version. By default ${FILEBEAT_MODULE_VERSION}."
  82. echo " -r, --revision <rev> [Optional] Package revision. By default ${WAZUH_TAG_REVISION}"
  83. echo " -rg, --registry <reg> [Optional] Set the Docker registry to push the images."
  84. echo " -v, --version <ver> [Optional] Set the Wazuh version should be builded. By default, ${WAZUH_IMAGE_VERSION}."
  85. echo " -m, --multiarch [Optional] Enable multi-architecture builds."
  86. echo " -h, --help Show this help."
  87. echo
  88. exit $1
  89. }
  90. # -----------------------------------------------------------------------------
  91. main() {
  92. while [ -n "${1}" ]
  93. do
  94. case "${1}" in
  95. "-h"|"--help")
  96. help 0
  97. ;;
  98. "-d"|"--dev")
  99. if [ -n "${2}" ]; then
  100. WAZUH_DEV_STAGE="${2}"
  101. shift 2
  102. else
  103. help 1
  104. fi
  105. ;;
  106. "-f"|"--filebeat-module")
  107. if [ -n "${2}" ]; then
  108. FILEBEAT_MODULE_VERSION="${2}"
  109. shift 2
  110. else
  111. help 1
  112. fi
  113. ;;
  114. "-m"|"--multiarch")
  115. MULTIARCH="true"
  116. shift
  117. ;;
  118. "-r"|"--revision")
  119. if [ -n "${2}" ]; then
  120. WAZUH_TAG_REVISION="${2}"
  121. shift 2
  122. else
  123. help 1
  124. fi
  125. ;;
  126. "-rg"|"--registry")
  127. if [ -n "${2}" ]; then
  128. WAZUH_REGISTRY="${2}"
  129. shift 2
  130. else
  131. help 1
  132. fi
  133. ;;
  134. "-v"|"--version")
  135. if [ -n "$2" ]; then
  136. WAZUH_IMAGE_VERSION="$2"
  137. shift 2
  138. else
  139. help 1
  140. fi
  141. ;;
  142. *)
  143. help 1
  144. esac
  145. done
  146. build || clean 1
  147. clean 0
  148. }
  149. main "$@"