Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 

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