如何在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
相关产品推荐
相关产品推荐

