linkorb/commando

Commando: 从队列中执行命令

安装: 160

依赖项: 0

建议者: 0

安全: 0

星星: 3

关注者: 5

分支: 1

开放问题: 5

类型:application

v1.14.0 2019-10-01 10:49 UTC

README

Commando是一个通用的作业运行器。

您可以在Json或Yaml文件中定义自己的命令,并从不同的存储中处理作业,例如文件目录或数据库。

它的目标是使将后台作业实现到您的应用程序变得容易。

一个示例工作流程

  1. 您在commando.yml中定义一个名为"hello"的命令
commands:
  hello:
    template: echo "Hello {{ greeted }}"
    inputs:
      greeted:
        default: world
  1. 您的应用程序将一个作业写入/your/commando-path/new,文件名为1.json
{
  "command": "hello",
  "inputs": {
    "greeted": "universe"
  }
}
  1. 您(或cron)运行commando run
  2. Commando将检查配置的存储中(在这种情况下是目录)的新作业文件,执行命令,用传递的作业参数替换模板中的参数,最终执行echo "Hello universe"
  3. Commando将作业状态报告回存储,包括退出代码、开始/结束时间、总持续时间以及stdout和stderr
  4. 如果需要,您的应用程序根据状态报告向用户报告。

存储

  • JsonDirJobStore:通过具有简单目录结构的json文件管理作业
  • PdoJobStore:通过数据库表管理作业
  • CamundaJobStore:Camunda外部任务客户端

用例

您可以用更复杂的命令行或shell脚本替换template

您的应用程序应将这些作业视为"fire-and-forget",这意味着应用程序不应阻塞,等待响应。它在触发命令且不需要立即了解响应的场景中最为理想。

示例

  • 在后台更新PDF或报告
  • 发送电子邮件和通知
  • 创建数据库备份
  • 处理上传的图像文件
  • ...等等

常规提交

此存储库正在使用常规提交

请至少运行一次npm install,以安装适当的工具和git钩子(这有助于您在提交之前通过linting来遵循约定)。

简而言之:您应在提交标题前加上正确的类型前缀(例如,feat: my new cool feature)。这有助于创建清晰的提交历史记录,自动处理semver,标记以及CHANGELOG.md生成。

如果您想在我们的规划系统中引用一张卡片,只需在提交标题的末尾添加一个#123。该卡片将正确地从变更日志等中链接。

要发布新版本,只需运行npm run publish。这将更新变更日志,并将composer.json、package.json等清单更新到新标签。标签遵循Semver,并基于自上次发布以来的提交类型选择。

许可证

请参阅包含的LICENSE.md文件

由LinkORB工程技术团队提供


查看我们的其他项目engineering.linkorb.com

顺便说一下,我们在招聘!