You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历GitLab CI中array类型的inputs输入?

GitLab CI数组类型Input遍历解决方案

你的问题出在两个关键点:

  1. 变量引用语法错误:$[[ inputs.tags]] 不是GitLab CI的正确变量引用方式,正确写法是 ${inputs.tags}。
  2. GitLab CI的array类型input不会自动转为bash数组,传递到shell时是以空格分隔的字符串形式存在的,需要手动转换为bash数组才能遍历。

正确配置示例

修改后的.gitlab-ci.yml如下:

spec:
  inputs:
    tags:
      type: array
      default:
         - "${CI_COMMIT_SHA}"
         - "latest"

---

print-tags:
   image: alpine:latest
   stage: build
   script: |
       # 方法1:用readarray将空格分隔的字符串转为bash数组
       readarray -t tags < <(printf '%s\n' "${inputs.tags}")
       for tag in "${tags[@]}"    
       do
          echo "$tag"
       done

另一种可选方法(利用IFS分割)

如果环境不支持readarray(比如部分轻量shell环境),可以用IFS分割字符串生成数组:

print-tags:
   image: alpine:latest
   stage: build
   script: |
       # 方法2:通过IFS分割字符串为数组
       IFS=' ' read -r -a tags <<< "${inputs.tags}"
       for tag in "${tags[@]}"    
       do
          echo "$tag"
       done

补充说明

两种方法都能将GitLab CI的array input正确转为bash数组,实现遍历输出。如果你的数组元素包含空格,只需在定义input时用引号包裹元素,上述方法依然能正确识别分隔。

内容的提问来源于stack exchange,提问作者Popeye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 00:58:13