如何在 github action job/continue-on-error 部分使用环境变量?
Posted
技术标签:
【中文标题】如何在 github action job/continue-on-error 部分使用环境变量?【英文标题】:How to use environment variable in github action job/continue-on-error section? 【发布时间】:2021-12-28 19:38:49 【问题描述】:如果我的 github 操作工作流 yaml 中有以下部分:
env:
fullySupportedScalaVersions: "2.13.6"
test:
runs-on: ubuntu-latest
continue-on-error: $ contains(env.fullySupportedScalaVersions, matrix.scalaVersion)
我收到如下错误消息:
Invalid workflow file : .github/workflows/main.yml#L38
The workflow is not valid. .github/workflows/main.yml (Line: 38, Col: 24): Unrecognized named-value: 'env'. Located at position 10 within expression: contains(env.fullySupportedScalaVersions, matrix.scalaVersion) .github/workflows/main.yml (Line: 38, Col: 24): Unexpected value '$ contains(env.fullySupportedScalaVersions, matrix.scalaVersion) '
我该如何解决或规避这个问题?
在以下工作流程中观察到上述情况: https://github.com/tek/splain/blob/6b12e57954aae0852e9b948e12ef5637c478b53d/.github/workflows/main.yml
【问题讨论】:
【参考方案1】:问题与continue-on-error:
字段上使用的语法有关。
我让它工作更新到
continue-on-error: $ contains( '$ env.FULLY_SUPPORTED_SCALA_VERSIONS ', '$ matrix.scalaVersion ')
这样工作流就不再返回错误了。
这里是related workflow file 这里是related workflow run在执行过程中返回错误,但由于其他原因与本主题无关。
据我了解,continue-on-error
字段的工作方式与表达式的 if
字段不同。
例如,当您在 if
条件中使用表达式时,您不需要使用表达式语法 $
,因为 GitHub 会自动将 if
条件作为表达式求值。
但是continue-on-error
不是这样,Github似乎不会自动检测到表达式,所以你需要把括号加回来。而且,Github 并没有直接在那里识别env.FULLY_SUPPORTED_SCALA_VERSIONS
,所以我也不得不在这里添加括号(可能是由于字段规范)。
【讨论】:
非常感谢!验证后会将您的答案发布到问题跟踪器以上是关于如何在 github action job/continue-on-error 部分使用环境变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GitHub Actions 的自托管运行器上修复“GitHub.Services.OAuth.VssOAuthTokenRequestException”
如何在 Github Actions 工作流中从 Github 包访问 Maven 依赖项?
如何在 GitHub Action 中使用 GitHub cli (gh) 向 Github 进行身份验证并创建 PR?