为满足公司大规模自动化任务的需求,参考Celery等框架,我设计了符合公司业务场景的自动化任务系统。
1 利用Chocolatey实现软件自动更新、自动打包与发布,以及自动完成相关依赖的安装。
2 将功能抽象为独立的服务,可配置自动化机器执行哪些服务,同时满足互斥服务的运行,如UE。
3 通过标签、机器性能、运行任务数、任务执行情况等因素,为每个机器打分,实现调度器智能调度任务。
4 Worker端同步线上任务,完成任务后同步到服务器,异常中断时自动重试。
5 Monitor端负责软件更新、清除任务执行中的弹框、进行清理工作,同时上报机器状态。
6 实现任务执行过程中的日志收集、上传和线上查看功能。
7 接入Sentry,便于分析错误和异常。