流水线的运行

更新时间:

本文介绍流水线的使用方法。关于云效流水线服务的概要介绍,请参考流水线概述。关于流水线的配置,请参考流水线的配置

入口

当进入一个项目后,左侧菜单栏的“流水线”菜单项,是流水线的入口,点击打开流水线列表页,可选择进入具体流水线页面。

而如果左侧菜单栏没有出现“流水线”菜单项,请前往“设置”->“服务”为该项目配置流水线服务。

阶段与任务

阶段与任务

图中,红色框“持续集成”是一个阶段,跟“日常环境测试”、“预发环境测试”、“正式发布”几个阶段串接在一起,形成整个流水线。

而每个阶段,可以包含若干任务。比如,“持续集成”阶段,包括黄色框“构建”这个任务,以及“单元测试”这个任务。两个任务串接在一起,是“持续集成”阶段的全部内容。

流水线的启动运行

可以把一条流水线设置为代码提交后自动触发、定时触发或手动触发。即使设置为前两种方式之一,也仍然可以手动触发。手动触发的方法是点击右上角的“运行流水线”按钮。

阶段的启动运行:设置为自动触发时

各阶段之间,可以设置为自动触发或手动触发。下面分别介绍。

设置为自动触发时,当前一阶段完成且后一阶段空闲时,就会自动开始运行后一阶段。

当前一阶段完成时,若后一阶段正在运行,则后一阶段不受干扰,继续运行完成。待运行完成,出现空闲时,后一阶段自动启动,接续前一阶段版本运行。

若在后一阶段运行时,前一阶段完成了多次运行,则在后一阶段出现空闲时,接续前一阶段的最近一次运行版本运行。

举个例子:假定运行日常环境测试阶段需要一个小时,而运行持续集成阶段需要五分钟。在某个小时内,有三次代码提交,触发了持续集成阶段的三次运行。持续集成阶段第一次运行结束,触发了日常环境测试阶段的自动运行,将持续一小时。持续集成阶段第二次运行结束,由于日常环境测试阶段仍在运行,因此不会立即启动该阶段再次运行。持续集成阶段第三次运行结束,由于日常环境测试阶段仍在运行,因此也不会立即启动该阶段运行。待到日常环境测试阶段运行结束后,空闲下来,开始再次运行,此时是接续持续集成阶段第三次运行的版本继续运行,而不是接续持续集成阶段第二次运行的版本继续运行。

亦支持在前一阶段运行完成时,若后一阶段正在运行,强制中止后一阶段当前运行,以便后一阶段接续运行前一阶段最新版本。具体方法是,此时点击两个阶段之间的开始按钮(下图红框),然后在弹出框中点击确定:

中止当前开始下次

阶段的启动运行:设置为手动触发时

设置为手动触发时,当前一阶段完成后,在两个阶段之间出现人工触发按钮,点击开始运行后一阶段。

此时,如果此时下一阶段正在运行,将弹出对话框确认中止正在运行的内容。

如果在下一阶段前,上一阶段已运行多次,则人工启动的下一阶段运行时,使用上一阶段最近一次运行的版本。

任务的启动运行

一个阶段内的串联的各任务,依次运行。前一个任务的完成,自动触发下一个任务的运行。

一个阶段内串联的各任务依次运行完毕后,该阶段才会再次运行。因此不会出现串联的各任务同时运行的情况。

另外,任务间并联,以便同时运行的功能已在开发中,敬请期待。

中止任务运行

有些类型的任务,提供了中止任务运行的方法。相应操作出现在流水线上的阶段中,和/或页面下方的任务中。以构建组件为例,见下图两个红框:

中止构建任务

需要人参与交互的任务

任务既可以是完全自动运行的,也可以是需要人工参与的。比如,人工测试、人工发布审核等等。

此时,可以在流水线的相应阶段上,或下方相应任务中,进行人工操作。如图两个红框:

人参与交互

任务运行失败时的处理

当有一个任务运行失败时,该阶段的该次运行即停止。不会再触发下一阶段的运行。也就是说,本次流水线运行至此停止。

此时,如果分析是配置或环境的问题,可以考虑在修复问题后,再次运行。具体操作为,点击流水线上的“重试”按钮。如下图红框:

重试

一个小技巧:如果希望任务运行失败时流水线能够继续运行,可以考虑改变任务的配置,让它总是向流水线返回成功。某些类型的任务能否实现这个方法,具体配置随任务类型的不同而不同。举例来说,对于单元测试组件,可以让自定义的命令行总是返回0。

附原理说明:任务间如何传递“版本”

前面提到,后一阶段接续前一阶段的版本继续运行。那么,“版本”具体是什么,如何承载呢?

流水线的第一个阶段的每次启动,都将会产生一个版本记录。典型的,包括源代码版本信息、相应包版本信息等等。该记录会逐任务逐阶段传递下去。

此外,每种任务类型,可以定义完成时向流水线上下文中,输出哪些参数。同时可以自定义开始时从流水线上下文中,获取哪些参数的值。据此,可以实现灵活的参数传递。