From 4eb9d9282fd2bc5b2aeddf914da23a712b5278ed Mon Sep 17 00:00:00 2001 From: garciagenrique Date: Tue, 8 Jul 2025 13:56:57 +0200 Subject: [PATCH] feat(gh_actions): improve CI to avoid duplicats and return top level dir --- .github/workflows/docker-autobuild.yaml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker-autobuild.yaml b/.github/workflows/docker-autobuild.yaml index 068bf611..f89ca21e 100644 --- a/.github/workflows/docker-autobuild.yaml +++ b/.github/workflows/docker-autobuild.yaml @@ -36,17 +36,33 @@ jobs: - name: List all changed dirs id: format-output run: | + echo "Parsing changed directories..." + + declare -A seen_dirs containers=() + for dir in ${{ steps.changed-files.outputs.all_changed_files }}; do echo "$dir was changed" - tmp_dir=$(echo $dir | cut -d'/' -f2) - containers+=("\"${tmp_dir}\"") + + # Extract top-level dir name + top_level_dir=$(echo "$dir" | cut -d'/' -f2) + + # And avoid duplications + if [[ -n "${seen_dirs[$top_level_dir]}" ]]; then + echo " - $top_level_dir already added, skipping" + continue + fi + + echo " - $top_level_dir is a new dir, adding it" + seen_dirs[$top_level_dir]=1 + containers+=("\"${top_level_dir}\"") + done - CONT_LIST=`echo "[${containers[@]}]" | sed 's/ /,/g'` + CONT_LIST=`echo "[${containers[*]}]" | sed 's/ /,/g'` echo "Updated containers list: $CONT_LIST" - echo ::set-output name=container_list::$CONT_LIST + echo "container_list=$CONT_LIST" >> "$GITHUB_OUTPUT" outputs: modified_containers: ${{ steps.format-output.outputs.container_list }}