【问题标题】:GitHub actions "extend" existing jobGitHub 操作“扩展”现有工作
【发布时间】:2021-04-08 11:28:30
【问题描述】:

我想要一些 github 操作工作流,它应该检查 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 扩展这个工作?有缓存,所以不会重新安装,但感觉就是无缘无故的长代码重复。

【问题讨论】:

    标签: github github-actions


    【解决方案1】:

    注意 最初我们不可能在复合动作中使用它,但现在有一段时间是可能的。更多详情请查看here

    如果你想在这里应用 DRY 规则,你应该检查composite run steps

    您现在可以使用 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
    

    对于这个文件夹结构:

    【讨论】:

    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2021-02-05
    • 1970-01-01
    相关资源
    最近更新 更多