|
10 | 10 | # Jobs: |
11 | 11 | # setup — validate lang_codes and emit matrix JSON. |
12 | 12 | # sync-mirrors — sync mirror master for all submodules; update super-repo master. |
| 13 | +# Zero libs/ entries in .gitmodules is a fatal precondition (run add-submodules first). |
13 | 14 | # On partial submodule failure: finalize successful pointers, then exit non-zero. |
14 | 15 | # start-local (matrix per lang) — local-{lang_code} in mirrors + super-repo + Weblate. |
15 | | -# Runs per language from setup when sync-mirrors produced successes (see job if:). |
16 | | -# Processes only submodules that succeeded in sync-mirrors. |
| 16 | +# Runs per language when sync-mirrors succeeded (see job if:). |
| 17 | +# Requires a non-empty updated_submodules handoff; empty array is a job failure. |
17 | 18 | # |
18 | 19 | # client_payload: |
19 | 20 | # lang_codes: (optional) Comma-separated lang codes (e.g. zh_Hans,ja). Defaults to vars.LANG_CODES. |
@@ -129,14 +130,12 @@ jobs: |
129 | 130 | exit 1 |
130 | 131 | } |
131 | 132 |
|
132 | | - mapfile -t submodule_names < <(libs_submodule_names_from_gitmodules_file ".gitmodules") |
133 | | -
|
134 | | - [[ ${#submodule_names[@]} -eq 0 ]] && { |
135 | | - echo "No libs/ submodules in .gitmodules, nothing to sync." >&2 |
136 | | - echo "updated_submodules=[]" >> "$GITHUB_OUTPUT" |
| 133 | + require_libs_submodules_in_gitmodules ".gitmodules" || { |
137 | 134 | end_phase |
138 | | - exit 0 |
| 135 | + exit 1 |
139 | 136 | } |
| 137 | +
|
| 138 | + mapfile -t submodule_names < <(libs_submodule_names_from_gitmodules_file ".gitmodules") |
140 | 139 | end_phase |
141 | 140 |
|
142 | 141 | begin_phase "$PHASE_PROCESS_SUBMODULES" "Sync mirror master" |
@@ -168,8 +167,8 @@ jobs: |
168 | 167 | fi |
169 | 168 |
|
170 | 169 | start-local: |
171 | | - # always() still evaluates outputs when sync-mirrors fails; updated_submodules is only set on full success. |
172 | | - if: ${{ always() && !cancelled() && needs.setup.result == 'success' && needs.sync-mirrors.outputs.updated_submodules != '' && needs.sync-mirrors.outputs.updated_submodules != '[]' }} |
| 170 | + # Run when sync-mirrors succeeded; empty updated_submodules is a fatal error inside the job. |
| 171 | + if: ${{ always() && !cancelled() && needs.setup.result == 'success' && needs.sync-mirrors.result == 'success' }} |
173 | 172 | needs: [setup, sync-mirrors] |
174 | 173 | runs-on: ubuntu-latest |
175 | 174 | strategy: |
@@ -241,9 +240,9 @@ jobs: |
241 | 240 | mapfile -t submodule_names < <(parse_submodule_names_json "${SYNC_MIRROR_UPDATES:-[]}") |
242 | 241 |
|
243 | 242 | [[ ${#submodule_names[@]} -eq 0 ]] && { |
244 | | - echo "No submodules succeeded in sync-mirrors, nothing to process." >&2 |
| 243 | + phase_err "No submodules from sync-mirrors to process (updated_submodules is empty)." |
245 | 244 | end_phase |
246 | | - exit 0 |
| 245 | + exit 1 |
247 | 246 | } |
248 | 247 | end_phase |
249 | 248 |
|
|
0 commit comments