6262 is_release_tag :
6363 description : " "
6464 value : ${{ jobs.Prepare.outputs.is_release_tag }}
65+ has_submodules :
66+ description : " "
67+ value : ${{ jobs.Prepare.outputs.has_submodules }}
6568 ref_kind :
6669 description : " "
6770 value : ${{ jobs.Prepare.outputs.ref_kind }}
8992# pr_mergedat:
9093# description: ""
9194# value: ${{ jobs.Prepare.outputs.pr_mergedat }}
95+ git_submodule_count :
96+ description : " "
97+ value : ${{ jobs.Prepare.outputs.git_submodule_count }}
98+ git_submodule_names :
99+ description : " "
100+ value : ${{ jobs.Prepare.outputs.git_submodule_names }}
101+ git_submodule_paths :
102+ description : " "
103+ value : ${{ jobs.Prepare.outputs.git_submodule_paths }}
92104
93105jobs :
94106 Prepare :
95107 name : Extract Information
96108 runs-on : ubuntu-24.04
97109 outputs :
98- on_default_branch : ${{ steps.Classify.outputs.on_default_branch }}
99- on_main_branch : ${{ steps.Classify.outputs.on_main_branch }}
100- on_release_branch : ${{ steps.Classify.outputs.on_release_branch }}
101- on_dev_branch : ${{ steps.Classify.outputs.on_dev_branch }}
102- is_regular_commit : ${{ steps.Classify.outputs.is_regular_commit }}
103- is_merge_commit : ${{ steps.Classify.outputs.is_merge_commit }}
104- is_release_commit : ${{ steps.Classify.outputs.is_release_commit }}
105- is_nightly_tag : ${{ steps.Classify.outputs.is_nightly_tag }}
106- is_release_tag : ${{ steps.Classify.outputs.is_release_tag }}
107- ref_kind : ${{ steps.Classify.outputs.ref_kind }}
108- default_branch : ${{ steps.Classify.outputs.default_branch }}
109- branch : ${{ steps.Classify.outputs.branch }}
110- tag : ${{ steps.Classify.outputs.tag }}
111- version : ${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }}
112- # release_version: ${{ steps.FindPullRequest.outputs.release_version }}
113- pr_title : ${{ steps.FindPullRequest.outputs.pr_title }}
114- pr_number : ${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}
110+ on_default_branch : ${{ steps.Classify.outputs.on_default_branch }}
111+ on_main_branch : ${{ steps.Classify.outputs.on_main_branch }}
112+ on_release_branch : ${{ steps.Classify.outputs.on_release_branch }}
113+ on_dev_branch : ${{ steps.Classify.outputs.on_dev_branch }}
114+ is_regular_commit : ${{ steps.Classify.outputs.is_regular_commit }}
115+ is_merge_commit : ${{ steps.Classify.outputs.is_merge_commit }}
116+ is_release_commit : ${{ steps.Classify.outputs.is_release_commit }}
117+ is_nightly_tag : ${{ steps.Classify.outputs.is_nightly_tag }}
118+ is_release_tag : ${{ steps.Classify.outputs.is_release_tag }}
119+ has_submodules : ${{ steps.Classify.outputs.has_submodules }}
120+ ref_kind : ${{ steps.Classify.outputs.ref_kind }}
121+ default_branch : ${{ steps.Classify.outputs.default_branch }}
122+ branch : ${{ steps.Classify.outputs.branch }}
123+ tag : ${{ steps.Classify.outputs.tag }}
124+ version : ${{ steps.Classify.outputs.version || steps.FindPullRequest.outputs.pr_version }}
125+ # release_version: ${{ steps.FindPullRequest.outputs.release_version }}
126+ pr_title : ${{ steps.FindPullRequest.outputs.pr_title }}
127+ pr_number : ${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}
128+ git_submodule_count : ${{ steps.Classify.outputs.git_submodule_count }}
129+ git_submodule_names : ${{ steps.Classify.outputs.git_submodule_names }}
130+ git_submodule_paths : ${{ steps.Classify.outputs.git_submodule_paths }}
115131
116132 steps :
117133 - name : ⏬ Checkout repository
@@ -152,12 +168,16 @@ jobs:
152168 is_release_commit="false"
153169 is_nightly_tag="false"
154170 is_release_tag="false"
171+ has_submodules="false"
155172 ref_kind="unknown"
156173 default_branch=""
157174 branch=""
158175 tag=""
159176 pr_number=""
160177 version=""
178+ git_submodule_count="0"
179+ git_submodule_names=""
180+ git_submodule_paths=""
161181
162182 printf "Classify Git reference '%s' " "${ref}"
163183 if [[ "${ref:0:11}" == "refs/heads/" ]]; then
@@ -272,6 +292,15 @@ jobs:
272292 exit 1
273293 fi
274294
295+ # Submodules
296+ if [[ -f .gitsubmodules ]]; then
297+ has_submodules="true"
298+ git_modules_file=.gitmodules # $(git rev-parse --show-toplevel)/.gitmodules
299+ git_submodule_count="$(grep -Po '(?<=\[submodule \")(.*)(?=\"\])' "${git_modules_file}" | wc -l)"
300+ git_submodule_names="$(grep -Po '(?<=\[submodule \")(.*)(?=\"\])' "${git_modules_file}" | paste -sd ':' -)"
301+ git_submodule_paths="$(git config --file "${git_modules_file}" --null --name-only --get-regexp '\.path$' | xargs -0 -n1 git config --file "${git_modules_file}" --get | paste -sd ':' -)"
302+ fi
303+
275304 printf "\nWriting output variables ...\n"
276305 tee --append "${GITHUB_OUTPUT}" <<EOF
277306 on_default_branch=${on_default_branch}
@@ -283,12 +312,16 @@ jobs:
283312 is_release_commit=${is_release_commit}
284313 is_nightly_tag=${is_nightly_tag}
285314 is_release_tag=${is_release_tag}
315+ has_submodules=${has_submodules}
286316 ref_kind=${ref_kind}
287317 default_branch=${default_branch}
288318 branch=${branch}
289319 tag=${tag}
290320 pr_number=${pr_number}
291321 version=${version}
322+ git_submodule_count=${git_submodule_count}
323+ git_submodule_names=${git_submodule_names}
324+ git_submodule_paths=${git_submodule_paths}
292325 EOF
293326
294327# TODO: why not is_release_commit?
@@ -373,6 +406,7 @@ jobs:
373406 printf "is_release_commit: %s\n" "${{ steps.Classify.outputs.is_release_commit }}"
374407 printf "is_nightly_tag: %s\n" "${{ steps.Classify.outputs.is_nightly_tag }}"
375408 printf "is_release_tag: %s\n" "${{ steps.Classify.outputs.is_release_tag }}"
409+ printf "has_submodules: %s\n" "${{ steps.Classify.outputs.has_submodules }}"
376410 printf "ref_kind: %s\n" "${{ steps.Classify.outputs.ref_kind }}"
377411 printf "default_branch: %s\n" "${{ steps.Classify.outputs.default_branch }}"
378412 printf "branch: %s\n" "${{ steps.Classify.outputs.branch }}"
@@ -384,3 +418,7 @@ jobs:
384418 printf "pr number: %s\n" "${{ steps.Classify.outputs.pr_number || steps.FindPullRequest.outputs.pr_number }}"
385419 printf " from merge: %s\n" "${{ steps.Classify.outputs.pr_number }}"
386420 printf " from pr: %s\n" "${{ steps.FindPullRequest.outputs.pr_number }}"
421+ printf "git_submodule_*:\n"
422+ printf " *_count_: %s\n" "${{ steps.FindPullRequest.outputs.git_submodule_count }}"
423+ printf " *_names: %s\n" "${{ steps.FindPullRequest.outputs.git_submodule_names }}"
424+ printf " *_paths: %s\n" "${{ steps.FindPullRequest.outputs.git_submodule_paths }}"
0 commit comments