github - GitHub 操作“扩展”现有工作
问题描述
我想要一些 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
扩展这份工作?有缓存,所以不会重新安装,但感觉就像无缘无故的长代码重复。
解决方案
注意最初我们不可能在复合动作中使用它,现在有一段时间是可能的。有关更多详细信息,请查看此处
如果你想在这里应用 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
对于这个文件夹结构:
推荐阅读
- javascript - 如何在 django 模板中对数组进行切片?
- flutter - Flutter 安装:操作系统错误:访问被拒绝,errno=5
- anaconda - 以管理员身份启动时,Anaconda 提示看不到我的网络驱动器
- c# - UWP - 在 RichEditBox 中添加内联元素
- java - java - springboot中如何避免多个or(||)进行空验证
- php - 更新和取消链接旧图像 PHP 的问题
- c# - '' 不包含 'LegendName' 的定义,并且找不到接受第一个参数类型为 '' 的可访问扩展方法 'LegendName'
- javascript - 在正则表达式中例外
- c++ - 从 guid 获取 USB 卷路径
- r - 将标签/标签/属性/属性添加到数据框列(变量)