diff --git a/scripts/dccd2.sh b/scripts/dccd2.sh index 6302c32..15ee9ac 100755 --- a/scripts/dccd2.sh +++ b/scripts/dccd2.sh @@ -64,13 +64,6 @@ update_compose_files() { if [ "$local_hash" != "$remote_hash" ]; then log_message "STATE: Hashes don't match, updating..." - # Pull any changes in the Git repository - if ! git pull --quiet origin "$REMOTE_BRANCH"; then - log_message "ERROR: Unable to pull changes from the remote repository (the server may be offline or unreachable)" - send_notification "Script Error" "Failed to update compose files: Unable to pull changes from the remote repository (the server may be offline or unreachable)" - exit 1 - fi - # Get list of changed files changed_files=$(git diff --name-only HEAD@{1} HEAD) @@ -86,17 +79,33 @@ update_compose_files() { # Check if docker-compose.yml was changed in this directory if echo "$changed_files" | grep -q "$folder/docker-compose.yml"; then - # Go into the directory - cd "$folder" || { log_message "ERROR: Failed to enter directory $folder"; send_notification "Script Error" "Failed to update compose files: Failed to enter directory $folder"; continue; } + # Calculate hash of docker-compose.yml before pull + before_pull_hash=$(md5sum "$folder/docker-compose.yml" | awk '{ print $1 }') - # Redeploy compose file in this directory - log_message "STATE: Redeploying compose file in directory: $folder" - docker compose up -d --quiet-pull + # Pull any changes in the Git repository + if ! git pull --quiet origin "$REMOTE_BRANCH"; then + log_message "ERROR: Unable to pull changes from the remote repository (the server may be offline or unreachable)" + send_notification "Script Error" "Failed to update compose files: Unable to pull changes from the remote repository (the server may be offline or unreachable)" + exit 1 + fi - # Go back to the original directory - cd "$dir" || { log_message "ERROR: Failed to return to directory $dir"; send_notification "Script Error" "Failed to update compose files: Failed to return to directory $dir"; exit 1; } - else - log_message "INFO: No changes in $folder/docker-compose.yml" + # Calculate hash of docker-compose.yml after pull + after_pull_hash=$(md5sum "$folder/docker-compose.yml" | awk '{ print $1 }') + + # Compare hashes to determine if the file was modified + if [ "$before_pull_hash" != "$after_pull_hash" ]; then + # Go into the directory + cd "$folder" || { log_message "ERROR: Failed to enter directory $folder"; send_notification "Script Error" "Failed to update compose files: Failed to enter directory $folder"; continue; } + + # Redeploy compose file in this directory + log_message "STATE: Redeploying compose file in directory: $folder" + docker compose up -d --quiet-pull + + # Go back to the original directory + cd "$dir" || { log_message "ERROR: Failed to return to directory $dir"; send_notification "Script Error" "Failed to update compose files: Failed to return to directory $dir"; exit 1; } + else + log_message "INFO: No changes in $folder/docker-compose.yml" + fi fi done else @@ -112,6 +121,7 @@ update_compose_files() { log_message "STATE: Done!" } + usage() { printf " Usage: $0 [OPTIONS]