在GitHub Actions中,需要结合多个action.yml
文件的情况很常见,通常这意味着你需要把多个独立定义的动作(actions)结合在一个工作流(workflow)中。
首先,我们要理解action.yml
文件实际上是用来定义单个动作的配置文件。如果你要在一个仓库(repo)中使用多个动作,你通常会在一个工作流文件中(例如.github/workflows/main.yml
)引用这些动作。
步骤说明:
-
定义动作(Actions): 每一个动作应该有自己的目录和
action.yml
文件。例如:action-a/action.yml
action-b/action.yml
-
创建工作流(Workflow): 在
.github/workflows
目录中创建一个工作流文件,如main.yml
。 -
在工作流中引用动作: 在工作流文件
main.yml
中,你可以通过使用uses
关键字来引用仓库中的动作。例如:yamlname: Example Workflow on: [push] jobs: job1: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Run Action A uses: ./action-a - name: Run Action B uses: ./action-b
这里,
uses: ./action-a
和uses: ./action-b
分别指向仓库中定义的两个不同的动作。
举例:
假设你有两个动作:一个是用于设置环境的动作(比如配置Node.js环境),另一个是运行测试的动作。你可以这样结构化你的仓库:
.github/actions/setup-node/action.yml
:该文件定义了设置Node.js环境的动作。.github/actions/run-tests/action.yml
:该文件定义了运行测试的动作。
然后,你的工作流文件.github/workflows/main.yml
可能看起来是这样:
yamlname: CI Workflow on: [push, pull_request] jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Node.js uses: ./.github/actions/setup-node - name: Run Tests uses: ./.github/actions/run-tests
这个例子中,每个动作被组织在不同的目录下,并通过工作流中的uses
字段分别被调用。这样,即使每个动作有自己的action.yml
文件,它们也可以被任意组合和重用在不同的工作流中。
2024年6月29日 12:07 回复