From b64afd03e2753ae193e9ef3f5d3fc66c1dbc2ce1 Mon Sep 17 00:00:00 2001 From: Mrugesh Mohapatra <1884376+raisedadead@users.noreply.github.com> Date: Wed, 3 Sep 2025 12:10:48 +0530 Subject: [PATCH] fix(GHA): allow selective build and deploy (#62020) --- .github/workflows/deploy-client.yml | 105 ++++++++++++++++++---------- 1 file changed, 70 insertions(+), 35 deletions(-) diff --git a/.github/workflows/deploy-client.yml b/.github/workflows/deploy-client.yml index bc4fb2875be..ca349525536 100644 --- a/.github/workflows/deploy-client.yml +++ b/.github/workflows/deploy-client.yml @@ -2,6 +2,23 @@ name: CD - Deploy - Clients on: workflow_dispatch: + inputs: + target_language: + description: 'Target language (or "all" for all languages)' + type: choice + options: + - all + - english + - chinese + - espanol + - chinese-traditional + - italian + - portuguese + - ukrainian + - japanese + - german + - swahili + default: all jobs: setup-jobs: @@ -33,46 +50,64 @@ jobs: ;; esac + setup-matrix: + name: Setup Matrix + runs-on: ubuntu-22.04 + needs: setup-jobs + outputs: + matrix: ${{ steps.matrix.outputs.matrix }} + steps: + - name: Setup Matrix + id: matrix + run: | + TARGET_LANG="${{ inputs.target_language || 'all' }}" + echo "Target language: $TARGET_LANG" + + if [[ "$TARGET_LANG" == "all" ]]; then + # Build all languages + MATRIX='{ + "node-version": [22], + "include": [ + {"lang-name-full": "english", "lang-name-short": "eng"}, + {"lang-name-full": "chinese", "lang-name-short": "chn"}, + {"lang-name-full": "espanol", "lang-name-short": "esp"}, + {"lang-name-full": "chinese-traditional", "lang-name-short": "cnt"}, + {"lang-name-full": "italian", "lang-name-short": "ita"}, + {"lang-name-full": "portuguese", "lang-name-short": "por"}, + {"lang-name-full": "ukrainian", "lang-name-short": "ukr"}, + {"lang-name-full": "japanese", "lang-name-short": "jpn"}, + {"lang-name-full": "german", "lang-name-short": "ger"}, + {"lang-name-full": "swahili", "lang-name-short": "swa"} + ] + }' + else + # Build single language + case "$TARGET_LANG" in + "english") SHORT="eng" ;; + "chinese") SHORT="chn" ;; + "espanol") SHORT="esp" ;; + "chinese-traditional") SHORT="cnt" ;; + "italian") SHORT="ita" ;; + "portuguese") SHORT="por" ;; + "ukrainian") SHORT="ukr" ;; + "japanese") SHORT="jpn" ;; + "german") SHORT="ger" ;; + "swahili") SHORT="swa" ;; + *) echo "Error: Unknown language $TARGET_LANG"; exit 1 ;; + esac + + MATRIX="{\"node-version\": [22], \"include\": [{\"lang-name-full\": \"$TARGET_LANG\", \"lang-name-short\": \"$SHORT\"}]}" + fi + + echo "matrix=$MATRIX" >> $GITHUB_OUTPUT + client: name: Clients - [${{ needs.setup-jobs.outputs.tgt_env_short }}] [${{ matrix.lang-name-short }}] - needs: [setup-jobs] + needs: [setup-jobs, setup-matrix] runs-on: ubuntu-22.04 strategy: fail-fast: false - matrix: - node-version: [22] - lang-name-full: - - english - - chinese - - espanol - - chinese-traditional - - italian - - portuguese - - ukrainian - - japanese - - german - - swahili - include: - - lang-name-full: english - lang-name-short: eng - - lang-name-full: chinese - lang-name-short: chn - - lang-name-full: espanol - lang-name-short: esp - - lang-name-full: chinese-traditional - lang-name-short: cnt - - lang-name-full: italian - lang-name-short: ita - - lang-name-full: portuguese - lang-name-short: por - - lang-name-full: ukrainian - lang-name-short: ukr - - lang-name-full: japanese - lang-name-short: jpn - - lang-name-full: german - lang-name-short: ger - - lang-name-full: swahili - lang-name-short: swa + matrix: ${{ fromJSON(needs.setup-matrix.outputs.matrix) }} permissions: deployments: write contents: read