GitHub actions "extend"现有作业

4

我希望有一些 GitHub Actions 工作流程,可以检查代码的 linting、检查构建代码是否成功,如果成功,则运行测试。

我的第一个“任务”是安装依赖项。每个工作都需要完成这个任务,因此我在每个工作中执行以下操作:

- uses: actions/checkout@v2

- name: Cache functions node_modules
  uses: actions/cache@v2
  with:
    path: node_modules
    key: ${{ runner.os }}-${{ hashFiles('package.json') }}

- name: Install dependencies
  run: npm ci

有没有一种方法将这个定义为作业 dependencies,然后有另一个作业 lint 扩展此作业?有一个缓存,所以它不会重新安装,但感觉长代码重复没有理由。

enter image description here

1个回答

3
注意:最初在组合操作中不可能使用 uses,但现在已经可以使用一段时间了。有关更多详细信息,请查看此处

如果您想在这里应用DRY规则,您应该检查组合运行步骤

现在,您可以使用shell脚本创建可重复使用的操作,甚至可以在同一个操作中混合多个shell语言。您可能有很多shell脚本来自动化许多任务,现在您可以轻松地将它们转换为操作,并将它们重用于不同的工作流程。

您可以按以下方式使用它:

主文件:

jobs:
  build:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v2
    - uses: octocat/say-hello@v1
      with: 
        os: ${{ runner.os }}

octocat/say-hello/action.yml:

inputs:
  name: 
    os: 'Your os'
    default: 'No os default'
runs:
  using: "composite"
  steps: 
    - uses: actions/checkout@v2

    - name: Cache functions node_modules
      uses: actions/cache@v2
      with:
        path: node_modules
        key: ${{ inputs.os }}-${{ hashFiles('package.json') }}

    - name: Install dependencies
      run: npm ci


如果您计划将复合材料保留在与主工作流相同的存储库中,则应将其称为。
    - uses: ./.github/actions/say-hello

对于这个文件夹结构:

enter image description here


5
我尝试过这个,但似乎在复合体内使用uses是不被允许的。请参考https://github.com/actions/runner/issues/862。 - Amit
@Amit 不是不可能的 https://github.blog/changelog/2021-08-25-github-actions-reduce-duplication-with-action-composition/ - Krzysztof Madej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接