如何在GitHub Action变量中定义可用于工作流的元素列表?
在GitHub Actions中使用列表类型的配置变量
GitHub的配置变量(不管是仓库级还是组织级)仅支持字符串类型,没法直接存储列表,得通过字符串模拟再解析的方式实现。这里提供两种可行的方案:
方案一:逗号分隔字符串+split函数拆分
- 设置变量:在仓库/组织的「Settings → Secrets and variables → Actions」里添加变量,值用纯逗号分隔,不要加引号或方括号:
TEST_OS_VERSIONS=ubuntu,ubuntu-20.04,windows-latest - 工作流中使用:用
split()函数把字符串拆成列表,直接给矩阵使用:jobs: test-job: runs-on: ${{ matrix.os }} strategy: matrix: os: ${{ split(vars.TEST_OS_VERSIONS, ',') }} steps: - name: Run test run: echo "Testing on ${{ matrix.os }}"
方案二:换行分隔字符串(适合含特殊字符的元素)
如果你的列表元素里包含逗号这类分隔符,用换行分隔更稳妥:
- 设置变量:每个元素单独占一行:
ubuntu ubuntu-20.04 macos-13 - 工作流中使用:用
split()按换行符拆分:matrix: os: ${{ split(vars.TEST_OS_VERSIONS, '\n') }}
为什么之前的写法无效?
你之前尝试给变量加引号、方括号(比如"ubuntu", "ubuntu-20.04"或["ubuntu", "ubuntu-20.04"]),GitHub会把整个内容当成单一字符串,没法自动解析成YAML列表。必须用纯分隔符的字符串,再通过split()函数主动转换成列表。
内容的提问来源于stack exchange,提问作者gforcada
相关产品推荐
相关产品推荐

