乐闻世界logo
搜索文章和话题

How to combine two action.yml files in one repo?

7 个月前提问
5 个月前修改
浏览次数45

1个答案

1

在GitHub Actions中,需要结合多个action.yml文件的情况很常见,通常这意味着你需要把多个独立定义的动作(actions)结合在一个工作流(workflow)中。

首先,我们要理解action.yml文件实际上是用来定义单个动作的配置文件。如果你要在一个仓库(repo)中使用多个动作,你通常会在一个工作流文件中(例如.github/workflows/main.yml)引用这些动作。

步骤说明:

  1. 定义动作(Actions): 每一个动作应该有自己的目录和action.yml文件。例如:

    • action-a/action.yml
    • action-b/action.yml
  2. 创建工作流(Workflow): 在.github/workflows目录中创建一个工作流文件,如main.yml

  3. 在工作流中引用动作: 在工作流文件main.yml中,你可以通过使用uses关键字来引用仓库中的动作。例如:

    yaml
    name: 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-auses: ./action-b分别指向仓库中定义的两个不同的动作。

举例:

假设你有两个动作:一个是用于设置环境的动作(比如配置Node.js环境),另一个是运行测试的动作。你可以这样结构化你的仓库:

  • .github/actions/setup-node/action.yml:该文件定义了设置Node.js环境的动作。
  • .github/actions/run-tests/action.yml:该文件定义了运行测试的动作。

然后,你的工作流文件.github/workflows/main.yml可能看起来是这样:

yaml
name: 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 回复

你的答案