doc

作业管理

作业管理概念描述

平台运用流程化、自动化的理念将零碎的单个任务组装成一个自动化的流水线作业。每个阶段和任务可以做为一个原子节点,进行灵活的配置,并且提供丰富多样的触发机制,结合权限管控和详细的结构展示,满足用户复杂多样的业务使用场景。

同时,自动化流水线可以与平台的脚本库功能结合使用,支持复杂的运维操作自动化、应用集成与发布自动化的场景,例如:服务部署+运维一体化流程式管理;制品库解析+应用自助更新;数据库SQL自动化运维等等。

作业管理

作业管理应用场景

应用集成与发布自动化

平台的集成与发布功能为企业提供持续集成的敏捷软件开发,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化产品开发(DEV)、测试(QA)、系统运维(OPS)等所有环节。软件行业日益清晰地认识到,为了持续、高效、可靠地交付软件产品和服务,开发部门和运维部门必须紧密合作,通过自动化的工具协作和沟通来完成软件的生命周期管理。核心的使用场景包括:

架构图

### 运维自动化

平台自动化运维功能真正地面向企业运维部门,依托高度可定制地脚本、流水线作业的阶段和任务,提供对任意云资源的运维批量操作,重复执行能力,可满足企业几乎一切自动化运维需求。

具体包括:对虚拟机(或任意云云组件,如:VM、网络、数据库、中间件等)的单个脚本执行或批量脚本执行;提供流水线作业执行,能够编排多个脚本、或脚本与文件分发、或脚本与组件安装的顺序和参数传递;对脚本执行、作业执行的定时操作;可以配置服务部署完成后的后置操作,即完成对应的脚本执行或作业执行,例如,云主机部署成功之后,进行云主机的批量启停操作;所有类型的运维操作,均有历史记录,记录着详细的信息,方便事后核查和审计。

脚本库

脚本:指可以运行在终端的工具或命令,平台支持包括 Shell、Perl、Bat、PowerShell、Python、SQL 等类型脚本。

脚本库:管理员将海量的脚本进行统一的创建和管理,支持根据业务需要创建一些共享脚本,供授权的业务组某类角色成员,在任意场景下直接引用。

在统一的平台界面上规范地管理适用于多种环境的脚本。支持直接新建、编辑和删除脚本,还支持快速查找新建好的脚本,将脚本共享给指定的业务组和角色使用。

同时,可以灵活地选择适应该脚本的云资源类型(如:云主机、数据库、中间件、网络、存储等等)。例如:创建MySQLCheck脚本来检查数据库参数,可以指定该脚本执行的云资源类型为 Software下的 RDS和 PaaS类型下的RDS,脚本执行完成后,可以在执行历史中可查看脚本执行的的详细日志信息。

流水线作业

平台自动化流水线创建自动的、可重复利用、安全合规的应用交付流程,自定义配置构建、部署、测试端到端的流程治理和控制。

流水线实现了自动化发布、跨不同环境和阶段部署、全生命周期部署和发布管理。

无论是流水线的定义,还是流水线的执行,都提供了友好的交互界面,通过简单实践即可掌握流水线的配置,流水线运行过程中也可直观感受流水线的处理过程。

流水线由一系列阶段构成,每个阶段由软件在发布到生产之前必须完成的多个任务和环境组成,描述了为了获得预期结果需要执行的操作。

流水线在包含一个或多个并行或串行任务的连续阶段中构建。

整个流水线的定义方式如下:

阶段

阶段是一组将并行或串行的任务组成,当前阶段任务满足规则并执行完成时,被提升到流水线中的下一个阶段。 平台流水线支持多种阶段和任务的自定义和组装,能够在阶段中添加任意数量的执行任务,通过它们已经可以设计出各种场景适用的开发、部署、运维流水线,同时基于平台的二次开发能力,可以扩展更多个性化的场景需求。

阶段分为多种类型,包括

例如,可定义软件打包、部署测试环境等不同的阶段。每个阶段的任务类型包括:Jenkins Job 任务、部署新应用任务、云资源变更任务、脚本执行任务等等。

流水线执行之后,用户可以查看每个阶段和任务的执行状态,以及输出信息。

任务

每个阶段的任务即软件开发过程中的活动或作业,这些活动可以是获取制品、自动部署,运行单元测试,创建任务、运行自定义工作流或脚本等等。

流水线的发布者可以定义每个任务的输入、输出参数,在后续的任务中进行调用。平台还能支持多种类型的流水线任务地定义,包括:

例如,通过一个蓝图部署任务,支持将任意新应用部署到windows、linux、k8s容器等各种丰富的运行环境,即可以自动化触发一个已发布的云资源服务,进行云资源的部署;而云资源任务则可以自动化进行云资源变更、运维操作,进行应用软件的升级、更新。

触发器

自定义流水线的触发条件,触发器定义何时自动运行流水线,可以手动触发流水线任务,也可以设定策略由触发器自动触发流水线任务。平台触发器类型包括:Webhook集成(支持Git,Gitlab等代码仓库改变触发)、Jenkins触发、定时触发、手工触发等等。

CI/CD工具链

平台能够集成丰富的CI/CD工具链,为应用软件提供代码管理、持续构建、制品管理、部署、监控运维等等多种功能,并提供开放的API。所有功能基于全面的集成框架,囊括主流的软件工具:GitLab、GitHub、Jenkins、Maven、Ansible、Puppet、Chef、Nexus、Kafka等等,实现开发人员更高效的代码管理,运维人员更低风险的变更应用程序,提升应用程序质量降低部署功能的风险。

工具链

制品库

制品即构建过程的输出物,包括软件包,测试报告,应用配置文件等可在服务器上直接运行或可查看二进制形式的文件,通常称之为二进制软件制品。

制品管理是对软件研发过程中生成的产物的管理, 一般作为最终交付物完成发布和交付。所有的制品包,依赖组件均能够纳入制品库中统一管理。制品库应作为测试及生产部署的唯一可信制品来源。

不同开发语言 所产生的制品的获取、使用、共享方式不同,不同的制品仓库能够管理各自开发语言类型的二进制制品。

平台将领先的二进制制品管理仓库Nexus嵌入到代码流中。 开发组织通常会为每个项目建立制品管理系统,以实现更加简单、方便地获取制品,并实现在网络上传输大型制品的良好性能。

尽管开发人员使用不同类型的代码开发构建工具、测试人员使用不同类型的测试工具,但是软件制品管理系统指定了仓库类型和制品位置,并处理获取最新和正确制品的所有复杂性,降低创建自动化发布流水线的复杂性,快速地获得正确的制品提高部署效率。

软件制品管理

入口

入口可以添加需要连接的持续集成系统,例如Jenkins。Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目。Jenkins通常与版本管理工具、构建工具结合使用,常用的版本控制工具有SVN、Git,构建工具有Maven、Ant、Gradle。

平台集成Jenkins工具,帮助用户高效地构建代码,自动测试,致力于打造虚拟化、容器、多云等环境下,适应复杂业务场景地应用持续集成(CI)。下图展示了应用持续集成过程中,Jenkins能发挥的作用。

Jenkins入口

执行历史

通过执行历史的详情可以了解在平台执行过的脚本、流水线作业,以及所有的脚本执行的基本信息、全局变量、执行结果的状态,目标机器和执行的结果日志。

在历史详情将显示任务的编排,如果任务执行成功,需要显示为绿色,失败为红色。脚本执行针对的云资源的也需要显示执行的结果,成功/失败。云资源中可以查看云主机的名称,IP,状态,点击显示执行结果,支持快速搜索云资源,也可用状态进行过滤。

下图展现了一个复杂的流水线的执行过程:

流水线