

























@@ -38,6 +38,11 @@ on:
3838required: false
3939default: false
4040type: boolean
41+live_model_providers:
42+description: Comma/space separated provider ids for the Docker live model matrix; blank runs all providers
43+required: false
44+default: ""
45+type: string
4146workflow_call:
4247inputs:
4348ref:
@@ -74,6 +79,11 @@ on:
7479required: false
7580default: false
7681type: boolean
82+live_model_providers:
83+description: Comma/space separated provider ids for the Docker live model matrix; blank runs all providers
84+required: false
85+default: ""
86+type: string
7787secrets:
7888OPENAI_API_KEY:
7989required: false
@@ -180,6 +190,7 @@ jobs:
180190outputs:
181191selected_sha: ${{ steps.validate.outputs.selected_sha }}
182192trusted_reason: ${{ steps.validate.outputs.trusted_reason }}
193+live_model_matrix: ${{ steps.live_model_matrix.outputs.matrix }}
183194steps:
184195 - name: Checkout selected ref
185196uses: actions/checkout@v6
@@ -224,6 +235,89 @@ jobs:
224235 echo "Trust reason: \`$trusted_reason\`"
225236 } >> "$GITHUB_STEP_SUMMARY"
226237238+ - name: Resolve live model provider matrix
239+id: live_model_matrix
240+env:
241+INPUT_LIVE_MODEL_PROVIDERS: ${{ inputs.live_model_providers }}
242+shell: bash
243+run: |
244+ set -euo pipefail
245+246+ all_providers=(anthropic google minimax openai opencode-go openrouter xai zai fireworks)
247+248+ provider_label() {
249+ case "$1" in
250+ anthropic) echo "Anthropic" ;;
251+ google) echo "Google" ;;
252+ minimax) echo "MiniMax" ;;
253+ openai) echo "OpenAI" ;;
254+ opencode-go) echo "OpenCode" ;;
255+ openrouter) echo "OpenRouter" ;;
256+ xai) echo "xAI" ;;
257+ zai) echo "Z.ai" ;;
258+ fireworks) echo "Fireworks" ;;
259+ *) return 1 ;;
260+ esac
261+ }
262+263+ normalize_provider() {
264+ local value="${1,,}"
265+ case "$value" in
266+ z.ai|z-ai) echo "zai" ;;
267+ opencode|opencode-go) echo "opencode-go" ;;
268+ open-router|openrouter) echo "openrouter" ;;
269+ *) echo "$value" ;;
270+ esac
271+ }
272+273+ is_known_provider() {
274+ local value="$1"
275+ local provider
276+ for provider in "${all_providers[@]}"; do
277+ [[ "$provider" == "$value" ]] && return 0
278+ done
279+ return 1
280+ }
281+282+ selected=()
283+ declare -A seen=()
284+ raw="${INPUT_LIVE_MODEL_PROVIDERS:-}"
285+ normalized_all="${raw,,}"
286+ normalized_all="${normalized_all//[[:space:],]/}"
287+ if [[ -z "$normalized_all" || "$normalized_all" == "all" ]]; then
288+ selected=("${all_providers[@]}")
289+ else
290+ while IFS= read -r entry; do
291+ [[ -z "$entry" ]] && continue
292+ provider="$(normalize_provider "$entry")"
293+ if ! is_known_provider "$provider"; then
294+ echo "Unknown live model provider '${entry}'. Expected one of: ${all_providers[*]}" >&2
295+ exit 1
296+ fi
297+ if [[ -z "${seen[$provider]:-}" ]]; then
298+ selected+=("$provider")
299+ seen[$provider]=1
300+ fi
301+ done < <(printf '%s\n' "$raw" | tr ',' '\n' | tr '[:space:]' '\n')
302+ fi
303+304+ if [[ "${#selected[@]}" -eq 0 ]]; then
305+ echo "No live model providers selected." >&2
306+ exit 1
307+ fi
308+309+ matrix_entries="[]"
310+ for provider in "${selected[@]}"; do
311+ label="$(provider_label "$provider")"
312+ matrix_entries="$(jq -c --arg label "$label" --arg provider "$provider" '. + [{provider_label: $label, providers: $provider}]' <<<"$matrix_entries")"
313+ done
314+ matrix="$(jq -c --argjson include "$matrix_entries" '{include: $include}')"
315+ echo "matrix=$matrix" >> "$GITHUB_OUTPUT"
316+ {
317+ echo
318+ echo "Live model providers: \`$(IFS=,; echo "${selected[*]}")\`"
319+ } >> "$GITHUB_STEP_SUMMARY"
320+227321 validate_release_live_cache:
228322needs: validate_selected_ref
229323if: inputs.include_live_suites && !inputs.live_models_only
@@ -842,26 +936,7 @@ jobs:
842936timeout-minutes: 75
843937strategy:
844938fail-fast: false
845-matrix:
846-include:
847- - provider_label: Anthropic
848-providers: anthropic
849- - provider_label: Google
850-providers: google
851- - provider_label: MiniMax
852-providers: minimax
853- - provider_label: OpenAI
854-providers: openai
855- - provider_label: OpenCode
856-providers: opencode-go
857- - provider_label: OpenRouter
858-providers: openrouter
859- - provider_label: xAI
860-providers: xai
861- - provider_label: Z.ai
862-providers: zai
863- - provider_label: Fireworks
864-providers: fireworks
939+matrix: ${{ fromJSON(needs.validate_selected_ref.outputs.live_model_matrix) }}
865940env:
866941OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
867942OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。