Change detection modification.

This commit is contained in:
2025-10-28 06:40:36 -04:00
parent 7e6446d47e
commit 009bf0af59
@@ -82,7 +82,7 @@ jobs:
yq '.services | keys | .[]' docker-compose-main.yml | sort > services_main.txt
yq '.services | keys | .[]' docker-compose-head.yml | sort > services_head.txt
echo "Creating list of modified services..."
echo "Creating list of service changes..."
touch service_changes.txt
# Detect newly added services
@@ -90,6 +90,11 @@ jobs:
[ -n "$service" ] && echo "$service: added" >> service_changes.txt
done
# Detect removed services
comm -23 services_main.txt services_head.txt | while read service; do
[ -n "$service" ] && echo "$service: removed" >> service_changes.txt
done
# Detect modified services
comm -12 services_main.txt services_head.txt | while read service; do
yq ".services[\"$service\"]" docker-compose-main.yml > tmp_main.yml
@@ -102,44 +107,66 @@ jobs:
echo "Detected service changes:"
cat service_changes.txt || echo "None"
# Gather list of modified/added services
mod_svcs=$(cut -d':' -f1 service_changes.txt | sort | uniq)
# Separate categories
added_svcs=$(grep -E ': added' service_changes.txt | cut -d':' -f1 | sort | uniq)
modified_svcs=$(grep -E ': modified' service_changes.txt | cut -d':' -f1 | sort | uniq)
removed_svcs=$(grep -E ': removed' service_changes.txt | cut -d':' -f1 | sort | uniq)
# Gather list of modified/added services (ignore removed for build/test)
mod_svcs=$( (echo "$added_svcs"; echo "$modified_svcs") | tr ' ' '\n' | sort -u | grep -v '^$' || true)
if [ -z "$mod_svcs" ]; then
echo "No modified or added services detected."
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
exit 0
else
echo "Modified/added services:"
echo "$mod_svcs"
# Include direct dependencies
echo "Resolving direct dependencies..."
deps_list=""
for svc in $mod_svcs; do
deps=$(yq -r ".services[\"$svc\"].depends_on | keys | .[]" docker-compose-head.yml 2>/dev/null || true)
if [ -n "$deps" ]; then
echo "$svc depends on:"
echo "$deps"
deps_list="$deps_list $deps"
fi
done
all_svcs=$( (echo "$mod_svcs"; echo "$deps_list") | tr ' ' '\n' | sort -u)
echo "Final service list (including direct dependencies):"
echo "$all_svcs"
# Expose to workflow output
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "$all_svcs" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
fi
echo "Modified/added services:"
echo "$mod_svcs"
# Include direct dependencies
echo "Resolving direct dependencies..."
deps_list=""
for svc in $mod_svcs; do
deps=$(yq -r ".services[\"$svc\"].depends_on | keys | .[]" docker-compose-head.yml 2>/dev/null || true)
if [ -n "$deps" ]; then
echo "$svc depends on:"
echo "$deps"
deps_list="$deps_list $deps"
fi
done
all_svcs=$( (echo "$mod_svcs"; echo "$deps_list") | tr ' ' '\n' | sort -u)
echo "Final service list (including direct dependencies):"
echo "$all_svcs"
# Expose to workflow output
echo "docker_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "$all_svcs" >> "$GITHUB_OUTPUT"
# Output removed services separately
echo "Removed services:"
echo "${removed_svcs:-None}"
echo "removed_svc_list<<EOF" >> "$GITHUB_OUTPUT"
echo "$removed_svcs" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
- name: List of Services for (Re)Deployment
run: |
echo -e "${{ steps.detect_services.outputs.docker_svc_list }}"
# Generate Markdown summary
{
echo "## 🧩 Service Change Summary"
echo ""
echo "| Change Type | Services |"
echo "|--------------|-----------|"
echo "| 🟢 **Added** | ${added_svcs:-None} |"
echo "| 🟡 **Modified** | ${modified_svcs:-None} |"
echo "| 🔴 **Removed** | ${removed_svcs:-None} |"
echo ""
echo "**Detected in:** \`${{ github.ref_name }}\` vs \`main\`"
} >> "$GITHUB_STEP_SUMMARY"
docker-compose-dry-run:
name: Docker Compose Dry Run