@@ -13,14 +13,40 @@ jobs:
1313 clients : ${{ steps.detect.outputs.clients }}
1414 steps :
1515 - name : Checkout repository
16- uses : actions/checkout@v4
16+ uses : actions/checkout@v6
17+ with :
18+ fetch-depth : 2
1719
1820 - name : Detect all clients
1921 id : detect
2022 run : |
21- ALL_CLIENTS=$(ls -d clients/*/ | xargs -n 1 basename | jq -R -s -c 'split("\n")[:-1]')
22- echo "Detected all clients: $ALL_CLIENTS"
23- echo "clients=$ALL_CLIENTS" >> $GITHUB_OUTPUT
23+ ALL_CLIENTS=$(ls -d clients/*/ | xargs -n 1 basename)
24+ CHANGED_CLIENTS=()
25+ PREV_COMMIT=$(git rev-parse HEAD~1)
26+
27+ # Check each client directory for changes
28+ for client in $ALL_CLIENTS; do
29+ if git diff --quiet $PREV_COMMIT HEAD -- clients/$client/; then
30+ echo "No changes detected in $client"
31+ else
32+ CHANGED_CLIENTS+=("$client")
33+ fi
34+ done
35+
36+ if git diff --quiet $PREV_COMMIT HEAD -- common/; then
37+ echo "No changes detected in common"
38+ else
39+ CHANGED_CLIENTS+=("common")
40+ fi
41+
42+ if [ ${#CHANGED_CLIENTS[@]} -eq 0 ]; then
43+ CHANGED_CLIENTS_JSON="[]"
44+ else
45+ CHANGED_CLIENTS_JSON=$(printf '%s\n' "${CHANGED_CLIENTS[@]}" | jq -R -s -c 'split("\n")[:-1]')
46+ fi
47+
48+ echo "Detected changed clients: $CHANGED_CLIENTS_JSON"
49+ echo "clients=$CHANGED_CLIENTS_JSON" >> $GITHUB_OUTPUT
2450
2551 release :
2652 needs : detect-clients
82108 echo "package_path=./" >> $GITHUB_OUTPUT
83109 else
84110 echo "dir=clients/${{ matrix.client }}" >> $GITHUB_OUTPUT
85- echo "package_path=./src " >> $GITHUB_OUTPUT
111+ echo "package_path=./" >> $GITHUB_OUTPUT
86112 fi
87113
88114 - name : Set up Go environment
@@ -147,7 +173,11 @@ jobs:
147173 fi
148174
149175 # Set the full tag name
150- FULL_TAG="${{ matrix.client }}/$NEW_VERSION"
176+ if [ "${{ matrix.client }}" == "common" ]; then
177+ FULL_TAG="common/$NEW_VERSION"
178+ else
179+ FULL_TAG="clients/${{ matrix.client }}/$NEW_VERSION"
180+ fi
151181 echo "tag=$FULL_TAG" >> $GITHUB_OUTPUT
152182 echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
153183
0 commit comments