DartOpsHub第一个预览版本
经过一天的摸索和打造,终于完成了自动化引擎dart_ops_engine的第一个预览版本0.2.0。
⚠️由于目前自动化流程还没有完成,下面只说明自动化流程的魅力。
待完善的流程
- 开发Desktop/Web App支持创建和解析自动化流程配置文件
- 开发插件市场支持发布插件和安装插件
功能预览
插件
由于目前插件市场没有做好,我们将准备一个本地插件Sample
void main(List<String> arguments) {
DartOpsEngine('sample', arguments)
..addAction('calculate', CalculateAction())
..run();
}
class CalculateAction extends ActionRun {
@override
Future<Map> run(Env env, Map request) {
final a = JSON(request)['a'].intValue;
final b = JSON(request)['b'].intValue;
return Future.value({'result': calculate(a, b)});
}
int calculate(int a, int b) {
return a * b;
}
}
这个插件很简单,我们可以通过传入两个a,b计算结果。之后我们通过dcm将插件编译到本地,你现在就可以调用插件。
/Users/king/.dcm/bin/sample/main/sample.exe calculate --id 1715416659876 --index sample@main_calculate_0 --args=a=10 --args=b=20
你可能会想--id和--index怎么得到,这个交给自动化引擎,它会自动处理的。
--args是我们设置的值,不但支持我们手动输入,还支持--env自动获取环境变量,并且支持--res支持拿着上一次插件运行的返回结果来输入。
配置文件
引擎的运行需要一个配置文件,比如我们想做到下面的功能。
- 第一步将10和20相乘
- 第二步拿着第一步结果和20相乘
我们可以配置一个下面的配置
[
{
"name": "sample@main", // 插件的名称
"commandName": "calculate", // 插件运行的命令名称
"argument": [ // 参数
"--args=a=10",
"--args=b=20"
],
"actionType": "dart" // 运行的类型 目前支持dart/shell
},
{
"name": "sample@main",
"commandName": "calculate",
"argument": [
"--res=a|0|result",
"--args=b=20"
],
"actionType": "dart"
}
]
现在我们执行
dart_ops_engine execute --path [配置文件路径]
结果
这个自动化运行完毕会在本地产生缓存文件
.env是当前执行过程中的环境变量
config.json是运行的配置
sample@main_calculate0和sample@main_calculate0是执行过程产生的文件夹,分别保存着对应的请求内容和返回内容
sample@main_calculate0
request.json
{"a":"10","b":"20"}
response.json
{"result":200}
sample@main_calculate0
request.json
{"a":"200","b":"20"}
response.json
{"result":4000}
总结
你是不是感到这个自动化的神奇之处,这个不但可以将以后各种插件混合在一起组成一个流程。比如发布版本,自动化上传。
而且可以部署后台服务,将云代码通过这种服务进行部署,可以做到实时更新代码的能力。