Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

187 строки
6.3 KiB

  1. #!/bin/bash
  2. # Default-Werte für Parameter
  3. SKIP_CLIENT=false
  4. SKIP_MIGRATION=false
  5. INIT_MODE=false
  6. # Projekt-Name
  7. PROJECT_NAME="Imaq"
  8. # Konfigurierbare Pfade
  9. BASE_DIR="/var/www/vhosts/app-imaq-pilot.de"
  10. GIT_REPO_PATH="${BASE_DIR}/git_repo/imaq"
  11. ANGULAR_PATH="${BASE_DIR}/angular"
  12. HTTPDOCS_PATH="${BASE_DIR}/httpdocs"
  13. PUBLIC_PATH="${HTTPDOCS_PATH}/public"
  14. CLIENT_PATH="${PUBLIC_PATH}/client"
  15. PHP_PATH="/opt/plesk/php/8.3/bin"
  16. ANGULAR_ENVIRONMENT="production"
  17. # Angular Analytics Abfrage disablen
  18. export NG_CLI_ANALYTICS=false
  19. # Funktion zum Überprüfen der Pfade
  20. check_paths() {
  21. local error=false
  22. # Prüfe ob alle erforderlichen Pfade existieren
  23. if [ ! -d "$GIT_REPO_PATH" ]; then
  24. echo "$(tput setab 1)ERROR: Git repository path does not exist: ${GIT_REPO_PATH}$(tput sgr 0)"
  25. error=true
  26. fi
  27. if [ ! -d "$BASE_DIR" ]; then
  28. echo "$(tput setab 1)ERROR: Base directory does not exist: ${BASE_DIR}$(tput sgr 0)"
  29. error=true
  30. fi
  31. # Im Init-Mode müssen nicht alle Verzeichnisse existieren
  32. if [ "$INIT_MODE" = false ]; then
  33. if [ ! -d "$ANGULAR_PATH" ]; then
  34. echo "$(tput setab 1)ERROR: Angular path does not exist: ${ANGULAR_PATH}$(tput sgr 0)"
  35. error=true
  36. fi
  37. if [ ! -d "$HTTPDOCS_PATH" ]; then
  38. echo "$(tput setab 1)ERROR: Httpdocs path does not exist: ${HTTPDOCS_PATH}$(tput sgr 0)"
  39. error=true
  40. fi
  41. if [ ! -d "$PUBLIC_PATH" ]; then
  42. echo "$(tput setab 1)ERROR: Public path does not exist: ${PUBLIC_PATH}$(tput sgr 0)"
  43. error=true
  44. fi
  45. fi
  46. # Prüfe ob PHP im angegebenen Pfad existiert
  47. if [ ! -d "$PHP_PATH" ]; then
  48. echo "$(tput setab 1)ERROR: PHP path does not exist: ${PHP_PATH}$(tput sgr 0)"
  49. error=true
  50. fi
  51. # Wenn Fehler gefunden wurden, beende das Skript
  52. if [ "$error" = true ]; then
  53. echo "$(tput setab 1)Critical errors found. Please check your path configuration at the top of the script.$(tput sgr 0)"
  54. exit 1
  55. fi
  56. }
  57. # Parameter verarbeiten
  58. while getopts ":cmi" opt; do
  59. case $opt in
  60. c) SKIP_CLIENT=true ;;
  61. m) SKIP_MIGRATION=true ;;
  62. i) INIT_MODE=true ;;
  63. \?) echo "Unknown option: -$OPTARG" >&2; exit 1 ;;
  64. esac
  65. done
  66. # Pfade überprüfen bevor irgendwelche Operationen durchgeführt werden
  67. check_paths
  68. export PATH=${PHP_PATH}:$PATH
  69. # Git Pull durchführen
  70. cd "${GIT_REPO_PATH}" || { echo "$(tput setab 1)Failed to change to repository directory$(tput sgr 0)"; exit 1; }
  71. sudo git pull
  72. echo "$(tput setab 2)${PROJECT_NAME} has been PULLED$(tput sgr 0)"
  73. # Client Update nur wenn nicht übersprungen
  74. if [ "$SKIP_CLIENT" = false ]; then
  75. echo "$(tput setab 2)Client update$(tput sgr 0)"
  76. # Im Init-Mode keine Dateien löschen
  77. if [ "$INIT_MODE" = false ]; then
  78. echo "$(tput setab 2)delete angular files$(tput sgr 0)"
  79. cd "${ANGULAR_PATH}" || { echo "$(tput setab 1)Failed to change to angular directory$(tput sgr 0)"; exit 1; }
  80. find . -maxdepth 1 ! -name 'node_modules' ! -name '.' -exec rm -rf {} +
  81. fi
  82. # Kopiere normale Dateien
  83. cp -r "${GIT_REPO_PATH}/angular/"* "${ANGULAR_PATH}" 2>/dev/null || true
  84. # Kopiere versteckte Dateien nur wenn sie existieren
  85. HIDDEN_FILES=$(find "${GIT_REPO_PATH}/angular" -maxdepth 1 -name ".*" -not -name "." -not -name "..")
  86. if [ ! -z "$HIDDEN_FILES" ]; then
  87. cp -r ${HIDDEN_FILES} "${ANGULAR_PATH}"
  88. fi
  89. cd "${ANGULAR_PATH}" || { echo "$(tput setab 1)Failed to change to angular directory$(tput sgr 0)"; exit 1; }
  90. npm install
  91. npx ng analytics off
  92. npx ng build --configuration ${ANGULAR_ENVIRONMENT}
  93. if [ -d "${CLIENT_PATH}/browser" ]; then
  94. mv "${CLIENT_PATH}/browser/"* "${CLIENT_PATH}/"
  95. rm -rf "${CLIENT_PATH}/browser"
  96. fi
  97. echo "$(tput setab 2)Client files have been updated$(tput sgr 0)"
  98. else
  99. echo "$(tput setab 3)Skip client update$(tput sgr 0)"
  100. fi
  101. # Arrays mit Dateien und Verzeichnissen die kopiert werden sollen
  102. COPY_ITEMS="composer.lock composer.json config migrations src templates"
  103. PUBLIC_FILES="index.php .htaccess .htpasswd static"
  104. # Dateien und Verzeichnisse kopieren
  105. for item in $COPY_ITEMS; do
  106. if [ -e "${GIT_REPO_PATH}/httpdocs/${item}" ]; then
  107. # Im Init-Mode keine Dateien löschen
  108. if [ "$INIT_MODE" = false ]; then
  109. rm -rf "${HTTPDOCS_PATH}/${item}"
  110. fi
  111. cp -rf "${GIT_REPO_PATH}/httpdocs/${item}" "${HTTPDOCS_PATH}"
  112. else
  113. echo "$(tput setab 3)Warning: Source item does not exist: ${GIT_REPO_PATH}/httpdocs/${item}$(tput sgr 0)"
  114. fi
  115. done
  116. # Spezielle Dateien im public Verzeichnis kopieren
  117. for file in $PUBLIC_FILES; do
  118. if [ -e "${GIT_REPO_PATH}/httpdocs/public/${file}" ]; then
  119. # Im Init-Mode keine Dateien löschen
  120. if [ "$INIT_MODE" = false ]; then
  121. rm -rf "${PUBLIC_PATH}/${file}"
  122. fi
  123. cp -rf "${GIT_REPO_PATH}/httpdocs/public/${file}" "${PUBLIC_PATH}"
  124. else
  125. echo "$(tput setab 3)Warning: Source file does not exist: ${GIT_REPO_PATH}/httpdocs/public/${file}$(tput sgr 0)"
  126. fi
  127. done
  128. echo "$(tput setab 2)Files have been copied$(tput sgr 0)"
  129. cd "${HTTPDOCS_PATH}" || { echo "$(tput setab 1)Failed to change to httpdocs directory$(tput sgr 0)"; exit 1; }
  130. export COMPOSER_ALLOW_SUPERUSER=1
  131. composer update --no-interaction
  132. echo "$(tput setab 2)COMPOSER UPDATED updated$(tput sgr 0)"
  133. # Migration nur wenn nicht übersprungen
  134. if [ "$SKIP_MIGRATION" = false ]; then
  135. php "${HTTPDOCS_PATH}/bin/console" doctrine:migration:migrate --no-interaction
  136. echo "$(tput setab 2)DATABASE SCHEMA updated$(tput sgr 0)"
  137. else
  138. echo "$(tput setab 3)Skip migrations$(tput sgr 0)"
  139. fi
  140. # Cache leeren
  141. if [ -d "${HTTPDOCS_PATH}/var/cache" ]; then
  142. cd "${HTTPDOCS_PATH}/var/cache/" || { echo "$(tput setab 1)Failed to change to cache directory$(tput sgr 0)"; exit 1; }
  143. rm -R *
  144. php "${HTTPDOCS_PATH}/bin/console" cache:clear
  145. php "${HTTPDOCS_PATH}/bin/console" cache:warmup
  146. echo "$(tput setab 2)CACHE HAS BEEN CLEARED$(tput sgr 0)"
  147. else
  148. echo "$(tput setab 3)Warning: Cache directory does not exist$(tput sgr 0)"
  149. fi
  150. cd "${HTTPDOCS_PATH}" || { echo "$(tput setab 1)Failed to change to httpdocs directory$(tput sgr 0)"; exit 1; }
  151. chmod 777 -R var/
  152. echo "$(tput setab 7)$(tput setaf 1)THINK ABOUT POSSIBLE PATCHES!"
  153. echo "You have updated ${PROJECT_NAME}!$(tput sgr 0)"