Lee*_*Lee 2 continuous-integration yaml github-actions
我正在定义一个引用另一个 yaml 文件的 github 操作脚本,希望能够以更有条理的方式进行配置。
\n这是我的作业文件,命名为deploy.yml的路径./.github/workflows/,其中第一个.是我的项目的根文件夹。
....\njobs:\n UnitTest:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v3\n - uses: ./.github/workflows/unittest.yml\nRun Code Online (Sandbox Code Playgroud)\n在同一./.github/workflows/文件夹中,我创建了另一个文件,名称unittest.yml如下:
name: "UnitTest"\ndescription: "Perform Unit Test"\nruns:\n # using: "composite"\n - name: Dependency\n run: |\n echo "Dependency setup commands go here"\n\n - name: UnitTest\n run: make test.unit\nRun Code Online (Sandbox Code Playgroud)\n但是,当我尝试使用act with command在本地测试脚本时act --secret-file .secrets --container-architecture linux/amd64,收到以下错误:
[Deploy/UnitTest] \xe2\x9c\x85 Success - Main actions/checkout@v3\n[Deploy/UnitTest] \xe2\xad\x90 Run Main ./.github/workflows/unittest.yml\n[Deploy/UnitTest] \xe2\x9d\x8c Failure - Main ./.github/workflows/unittest.yml\n[Deploy/UnitTest] file does not exist\n[Deploy/UnitTest] Job failed\nRun Code Online (Sandbox Code Playgroud)\n我尝试仅将文件名放入unittest.yml子./unittest.yml文件myrepo_name/.github/workflows/unittest.yml夹中,如本文档的步骤 2所示,但没有成功。
根据组合动作的运行示例,我想这应该可行。
\n有人请建议吗?
\nusing: "composite"PS 你可能已经注意到了中的注释行unittest.yml。如果我取消注释该行,我将收到错误:
Error: yaml: line 3: did not find expected key\nRun Code Online (Sandbox Code Playgroud)\n
复合操作不是由 YAML 文件引用,而是由文件夹引用。在该文件夹中,您应该有一个描述该操作的 action.yml。
这就是为什么您收到 错误using: composite,您正在定义工作流程(因为它位于 中./github/workflows),但您正在使用操作语法。
我建议这个文件夹结构:
.github/
|-- workflows/
| -- deploy.yml
unittest-action/
|-- action.yml
Run Code Online (Sandbox Code Playgroud)
通过这种结构,您应该能够引用该操作
.github/
|-- workflows/
| -- deploy.yml
unittest-action/
|-- action.yml
Run Code Online (Sandbox Code Playgroud)
请参阅文档以获取更多信息。
根据您的用例和设置,您可能还需要考虑可重用的工作流程。
您可以在目录中定义可重用的工作流程,.github/workflows如下所示:
- uses: actions/checkout@v3
- uses: ./unittest-action
Run Code Online (Sandbox Code Playgroud)
然后这样称呼它:
# unittest.yml
on: workflow_call
jobs:
deploy:
# ...
Run Code Online (Sandbox Code Playgroud)
请注意可重用工作流程如何成为一个完整的作业。这意味着,您无法从外部进行结帐,然后仅在可重用作业中运行单元测试。可重用作业(unittest.yml)需要首先进行签出。
该选哪一个呢?
这是一篇博客文章,总结了复合操作和可重用工作流程之间的一些差异,例如:
| 归档时间: |
|
| 查看次数: |
3840 次 |
| 最近记录: |