github - GitHub 上下文变量未评估可重用工作流参考
问题描述
我目前正在尝试构建一个可重用的工作流,其中可重用的工作流通过 on: workflow_call 触发器等正确设置。
但是,当我调用工作流时,我需要能够使用当前分支或提交动态填充共享工作流文件引用。如果可能的话,我还想用当前的 org/repo 动态地填充组织和 repo,但这不太重要。因此,我对其他工作流程的调用如下所示:
jobs:
call-build-and-test:
uses: ${{github.repository}}/.github/workflows/cicd-build-and-test.yml@${{github.sha}}
然而不幸的是,两个上下文变量 ,github.repository
和github.sha
没有得到评估,并且工作流在运行时失败,说明在字符串的开头需要一个有效的组织和存储库,或者,如果组织和存储库是硬编码的,因此它们是有效,然后它指出无法找到提交,因为它也没有正确评估。
谁能解释为什么上下文变量没有得到评估?如果这是不可能的,我该如何动态填充这些值?对它们进行硬编码是不够的,因为它们需要针对当前分支上的版本执行,因为主分支还没有合并工作流,所以不能像 Github 文档中的示例那样简单地硬编码为:
我相信使用上下文变量github.*
是正确的方法,因为环境变量仅在执行作业的 shell 范围内可用,但是我也尝试过环境语法,即GITHUB_REPOSITORY
,并且遇到GITHUB_SHA
了同样的问题。
解决方案
由于 Github Actions 不支持带有属性的表达式,目前无法完成。uses
没有解决方法(还没有?),因为工作流解释器(当您将工作流推送到存储库时也会检查工作流语法)此时无法从表达式中获取值。
如果工作流被解释器识别,它可能会起作用,但它不会出现在Actions
选项卡上,因为它被认为是无效的。
目前,您只能在符号之后使用或tag
,与使用任何操作的方式相同。因此,目前必须对其进行硬编码。branch ref
commit hash
@
推荐阅读
- tfs - 是否可以为本地 TFS 2018 设置代理发布代理?
- reactjs - 静态服务的 create-react-app 是否可以使用 react-router browserHistory *并且*完全保持客户端(在路由上没有网络获取,没有 SSR)
- mysql - 插入地图
进入 MySQL JSON 列 - coldfusion - 在 ColdFusion 11 中嵌入 PNG 或 BMP VS JPG 或 GIF 图像
- php - array_count_values():只能计算字符串和整数值
- c# - 在位于外部库中的类上创建抽象
- javascript - 使用jQuery将列表包含在有序列表中并将其打印到屏幕上?
- swift - 多次调用 SpriteKit 碰撞
- angular - HostBinding 到匿名 lambda 函数?
- r - 从空间点数据创建边界多边形以在传单中绘制