首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GitHub操作“扩展”现有作业

GitHub操作“扩展”现有作业
EN

Stack Overflow用户
提问于 2021-01-02 02:57:31
回答 1查看 565关注 0票数 2

我希望有一些github操作工作流,它应该检查linting,检查是否成功构建代码,如果是的话,运行测试。

我的第一个“工作”是安装依赖项。每个作业都需要这样做,所以我在每个作业中执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
- 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

有没有办法将其定义为job dependencies,然后有另一个作业lint扩展此作业?有一个缓存,所以它不会重新安装,但它感觉像是无缘无故的长时间重复代码。

EN

回答 1

Stack Overflow用户

发布于 2021-01-02 09:47:07

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

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

您可以使用它,如下所示:

主文件:

代码语言:javascript
代码运行次数:0
运行
复制
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

代码语言:javascript
代码运行次数:0
运行
复制
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

ANd如果您计划将组合保存在与主工作流相同的存储库中,则将其称为

代码语言:javascript
代码运行次数:0
运行
复制
    - uses: ./.github/actions/say-hello

对于此文件夹结构:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65532726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档