Mic*_*elB 19 github github-actions github-actions-workflows
我不确定这是一个错误还是昨天发生的重大更改,我有一个非常简单的设置,调用三个可重用的工作流程:
name: pr-checks
on:
pull_request:
branches: "**"
jobs:
lint:
name: Call Lint
uses: ./.github/checks/check-lint.yaml
test:
name: Call Test
uses: ./.github/checks/check-test.yaml
e2e:
name: Call E2E
uses: ./.github/checks/check-e2e.yaml
Run Code Online (Sandbox Code Playgroud)
但这会抛出
"invalid value workflow reference: no version specified"
Run Code Online (Sandbox Code Playgroud)
截至目前,尽管昨天相同的工作流程已经有效。
当在“作业”级别重用这样的工作流程时 - 没有必要指定版本,事实上,如果我指定版本,它曾经会出错。
附上屏幕截图,因为我认为这没有多大意义。
我确实单击了“重新运行所有作业”,它重新运行成功。
然而,没有任何明显的差异,并且在删除构建步骤之后只是为了确保那里没有发生任何奇怪的事情:
Gui*_*urd 33
正如您在两张屏幕截图中看到的,一张是指.github/workflows目录(有效的),另一张是指.github/checks目录(无效的)。
简短回答: 如果您将工作流程文件夹更改回workflows而不是checks,它应该按预期工作。
长答案:两个不同概念的语法之间似乎存在混淆:
要从工作流程访问本地操作(带有action.yml文件的文件夹),您需要使用actions/checkout第一个,以允许它访问其他存储库文件夹和文件。
例子:
steps:
- uses: actions/checkout@v3 # Necessary to access local action
- name: Local Action Call
uses: ./.github/actions/local-action #path/to/action
Run Code Online (Sandbox Code Playgroud)
我前段时间在这里做了一个 POC ,如果你想看一下。
现在,如果您想使用可重用的工作流程,问题就不同了:
与其他工作流文件一样,您可以在 存储库的
.github/workflows目录中找到可重用工作流。不支持工作流目录的子目录。
在这种情况下,根据文档中的其他部分:
您可以使用以下语法之一引用可重用工作流程文件:
{owner}/{repo}/.github/workflows/{filename}@{ref}用于公共存储库中可重用的工作流程。
./.github/workflows/{filename}用于同一存储库中的可重用工作流程。
{ref}可以是SHA、发布标记或分支名称。
例子:
lint:
name: Call Lint
uses: ./.github/workflows/check-lint.yaml@{SHA/TAG/BRANCH}
Run Code Online (Sandbox Code Playgroud)
或者
lint:
name: Call Lint
uses: ./.github/workflows/check-lint.yaml
Run Code Online (Sandbox Code Playgroud)
这就像您试图调用可重用工作流程,就好像它是本地操作一样,这将不起作用,因为可重用工作流程需要位于目录中.github/workflows。
请注意,您最终可以在@branch-name工作流调用末尾添加 ,以确保使用要测试的分支中的工作流(如果可重用工作流已存在于默认分支上)。
| 归档时间: |
|
| 查看次数: |
14108 次 |
| 最近记录: |