我希望有一些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
有没有办法将其定义为job dependencies
,然后有另一个作业lint
扩展此作业?有一个缓存,所以它不会重新安装,但它感觉像是无缘无故的长时间重复代码。
发布于 2021-01-02 01:47:07
如果你想在这里应用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
ANd如果您计划将组合保存在与主工作流相同的存储库中,则将其称为
- uses: ./.github/actions/say-hello
对于此文件夹结构:
https://stackoverflow.com/questions/65532726
复制