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

如何在GitHub Action的job/continue-on-error配置中使用环境变量

问题原因

这个报错是GitHub Actions的固有语法限制导致的:

  • continue-on-error 属于作业级配置字段,GitHub Actions解析这类字段时,全局env上下文还未完成加载,因此无法在该字段的表达式中直接引用env定义的变量
  • 你贴的代码还存在缩进错误:test是作业定义,应该作为顶级键jobs的子项,不应该缩进在env字段下
解决方案

方案1:直接写死判断值(最简单)

如果你的支持版本列表不需要多处复用,直接把值写到表达式里即可,绕过env上下文限制:

env:
  fullySupportedScalaVersions: "2.13.6"

jobs:
  test:
    runs-on: ubuntu-latest
    continue-on-error: ${{ contains('2.13.6', matrix.scalaVersion) }}
    # 其余作业配置保持不变

方案2:用YAML锚点复用常量

如果需要多处复用版本列表,可以用YAML原生的锚点语法,不需要依赖GitHub Actions上下文:

# 定义锚点
vars:
  supportedScalaVersions: &supported_versions "2.13.6"

env:
  fullySupportedScalaVersions: *supported_versions

jobs:
  test:
    runs-on: ubuntu-latest
    continue-on-error: ${{ contains(*supported_versions, matrix.scalaVersion) }}
    # 其余作业配置保持不变

方案3:用前置作业输出传递值

如果你的版本列表是动态生成的,必须通过env传递,可以新增一个前置作业输出参数,再在测试作业中引用:

env:
  fullySupportedScalaVersions: "2.13.6"

jobs:
  get-supported-versions:
    runs-on: ubuntu-latest
    outputs:
      list: ${{ env.fullySupportedScalaVersions }}
    steps:
      - run: echo "版本列表已加载到作业输出"

  test:
    needs: get-supported-versions
    runs-on: ubuntu-latest
    continue-on-error: ${{ contains(needs.get-supported-versions.outputs.list, matrix.scalaVersion) }}
    # 其余作业配置保持不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:06