时速云

用户指南

时速云帮助文档旨在帮助开发者更快、更好、更高效使用时速云产品,涵盖了用户指南、开发者资源、最佳实践等。

TenxFlow

TenxFlow:您可以在这里完成【代码项目构建、编译、测试】等CI/CD流程的定义与执行,每个TenxFlow可以由若干个(≥1)流程化的子项目组成,每个子项目所执行的任务可以通过卡片的方式进行定义和展示。

本节通过以下几个方面来介绍TenxFlow的主要功能和具体操作:

TenxFlow总览

在TenxFlow总览页中,可以查看所有TenxFlow项目的列表,在搜索框中可以进行搜索。
点击执行记录,即可查看该TenxFlow的最近一次执行记录。
点击立即构建,则会启动一次新的TenxFlow执行流程,而且是从第一个子项目开始执行。
点击下拉箭头,选择删除TenxFlow,将会删除整个TenxFlow项目。

img

创建TenxFlow

单击左侧导航中的TenxFlow,单击左上角的创建TenxFlow

img

在右侧弹出框中,首先选择创建Flow方式:可视化流程定义TenxFlow yaml方式定义

  • 如果选择可视化流程定义,通过以下步骤创建一个TenxFlow项目: 输入TenxFlow名称,如果需要邮件通知,可以点选“邮件通知”,并输入可用的收件邮箱,选择通知场景,再单击“立即创建并配置流程定义”。

img

下一步便跳转到可视化TenxFlow流程定义页面,操作说明详见第3小节-可视化TenxFlow流程定义。

  • 如果选择TenxFlow yaml方式定义,则可以通过编辑Yaml文件,实现快速创建TenxFlow。

img

用户可以参考已经创建好的TenxFlow项目的Yaml描述(参考第4小节-管理TenxFlow),编辑满足自身需求的Yaml定义文件。或者在使用过程中,保存一些常用的TenxFlow项目的Yaml文件作为模板,以便下一次创建类似的TenxFlow项目直接进行复制。

可视化TenxFlow流程定义

TenxFlow流程定义:用户在这里定义一个TenxFlow项目的执行流程,每个卡片对应一个子项目,分别执行镜像构建、代码编译、单元测试或者集成测试等子任务,大部分流程以生成应用镜像作为结束。

TenxFlow采用卡片式的流程化设计,每个TenxFlow由若干个(≥1)串行的子项目组成。

TenxFlow流程定义基本操作

添加子项目

目前支持4种类型的Flow子项目:构建镜像代码编译单元测试集成测试

点击“添加子项目”,会新创建一个项目卡片:

img

具体如何配置新建的子项目,请参考第3.2小节。

启动&重启子项目

对于已经创建好的Flow卡片,点击启动,则会开始执行Flow。对于执行失败的子项目,可以执行重启

img

查看子项目执行记录

点击执行记录,可以在弹出框中查看当前Flow子项目的执行记录,其中包括任务执行过程中的事件记录和输出日志。

img
img

编辑子项目

点击编辑项目,可以修改当前Flow子项目的配置,详细说明参考2.3.2小节。

img

删除子项目

点击下拉箭头,选择删除项目,可以删除该子项目。

img

设置持续集成

点击卡片右上角滑块持续集成,可以配置持续集成触发规则。

img

目前支持三种触发规则:

  • 提交代码到branch:在输入框中填写期望实现持续集成的branch名称,确认后,如果在此branch上的commit代码,或者该branch合并(merge)一个pull request的时候,则会自动触发持续集成;

  • 提交代码到tag:在输入框中填写期望实现持续集成的tag名称,确认后,如果提交代码到该tag,则会自动触发持续集成;

  • 新建一个Pull request(对于GitHub)/ Merge request(对于GitLab)。

上述规则支持多选。一旦该项目对应的代码仓库触发任意一条规则时,将自动执行TenxFlow。

注:每个TenxFlow只有第一个子项目可以设置持续集成的触发规范。

Flow子项目配置详解

项目类型

通过选择卡片的第一项-项目类型,可以定义当前卡片所执行CICD任务的类型,即:构建镜像代码编译单元测试集成测试。其中,构建镜像是最常用的一种类型,一般也作为TenxFlow的最后一个项目。

img

如果子项目的类型选择构建镜像,弹出的卡片如下图所示,用户可以在其中进行相应的配置。

img

如果子项目的类型选择代码编译单元测试或者集成测试,弹出的卡片如下图所示,用户可以在其中进行相应的配置。

img

下面具体说明各配置项的作用。

项目代码

点击“选择代码库”,在弹出框中会列出已激活的所有代码库,选择代码分支,并点击“部署”,即可完成添加代码库,点击“清空”可以清除上一步选择的代码库。

img

项目名称

用户自定义。

基础镜像

基础镜像以Docker镜像的形式存在,在TenxFlow执行过程中,会以容器形式在后台运行。

根据某个卡片所执行的任务的不同,用户需要使用相对应的基础镜像:

1) 对于构建镜像卡片,默认使用Tenxcloud提供的标准镜像:tenxcloud/image-builder:v2.0,此镜像主要具备以下功能:

  • 根据关联代码库中包含的Dockerfile(或云端Dockerfile)来构建Docker镜像;

  • 将生成的镜像上传到镜像仓库。

2) 对于代码编译卡片,一般来说,对应的基础镜像主要具备以下功能:

  • 提供源代码的编译环境和需要使用的编译工具,典型的如JDK-Maven、JDK-ANT等;

  • 如果在代码编译过程中需要调用依赖库,则基础镜像中需要包含相应的配置文件,或者直接将依赖包打包到该基础镜像中;

  • (可选)包含代码编译脚本,并在镜像启动时指定执行此脚本。如果编译脚本比较简单,则可以直接使用Flow卡片中的脚本命令选项来添加编译脚本,详见下文说明。

3) 对于单元测试集成测试卡片,一般来说,对应的基础镜像主要具备以下功能:

  • 提供单元/集成测试所需要的环境和工具;

  • 如果在单元/集成测试过程中需要调用依赖库,则基础镜像中需要包含相应的配置文件,或者直接将依赖包打包到该基础镜像中;

  • (可选)包含单元/集成测试脚本,并在镜像启动时指定执行此脚本。如果单元/集成测试脚本比较简单,则可以直接使用Flow卡片中的脚本命令选项来添加单元/集成测试脚本,详见下文说明。

对于 2)和 3),目前Tenxcloud提供了几种典型的基础镜像供用户使用,未来版本会增加添加用户自定义基础镜像的功能,以适配用户多样化的编译或者测试需求。

另外,用户可以添加自定义环境变量,这样的话,在运行基础镜像执行TenxFlow任务时,会将环境变量传入容器。用户可以将一些特殊的配置以环境变量的形式进行导入。

依赖服务

定义用户在该Flow项目的执行过程中需要依赖的服务,如Mysql等。与基础镜像类似,Tenxcloud提供了一些常用的镜像供用户使用。一般来说,镜像构建任务不需要配置此项。

脚本命令

如前所述(见基础镜像的说明),用户可以通过在此处添加脚本来执行相应的任务。例如,Maven常用的脚本

mvn clean install

注:如果此处配置了脚本命令,则会覆盖基础镜像的启动命令。另外,对于构建镜像的子项目,只能使用默认的tenxcloud/image-builder镜像,只能使用预设的脚本/build.sh。

Dockerfile

对于执行镜像构建任务的Flow子项目而言,Dockerfile是必须要有的,TenxFlow支持两种类型的Dockerfile存储方式:

  • 使用代码仓库中的Dockerfile:适用于用户的源代码库中已经存在Dockerfile的情况,在构建过程中,TenxFlow会clone/checkout该卡片所添加的代码库中包含的Dockerfile,并按照此Dockerfile进行Docker镜像的构建;

  • 使用云端创建Dockerfile:适用于用户的源代码库中不存在Dockerfile的情况,此时用户可以使用Tenxcloud的云端编辑器编写Dockerfile,并保存在Tenxcloud容器云平台中。Tenxcloud可以实现云端Dockerfile的统一管理,详见:云端Dockerfile

具体使用方法如下:

如果使用代码仓库中的Dockerfile,需要在输入框(如下图所示,其中/代表代码仓库的当前路径)中填写Dockerfile在代码仓库中的路径。如果输入框留空,则使用默认路径/Dockerfile; 如果Dockerfile在代码库当前路径下的某个文件夹中,则需要在编辑框中填入Dockerfile路径,例如Dockerfile放在/tenxcloud中,则填入tenxcloud/Dockerfile。

img

如果使用云端创建Dockerfile,首先点击“编辑云端Dockerfile”,在弹出的Dockerfile编辑器中编辑Dockerfile,完成后点击“保存并使用”,用户可以根据偏好设置编辑器的主题,也可以选择全屏显示进行编辑。下图是一个简单的制作nodejs应用镜像的Dockerfile示例:

img

参考:关于如何编写Dockerfile,可以参考官方文档 -> 如何编写Dockerfile

镜像名称

输入构建生成的Docker镜像的名称。

标准Docker镜像的完整表示规则为:<Remote image hub>/<Namespace>/<Repository>:<Tag>,此处需要输入的是<Repository>这一项。

镜像版本
选择构建生成的Docker镜像的Tag,支持以下三种类型的Tag命名规则:

  • 代码分支名为Tag:使用代码库的当前分支名称作为构建时的Tag,例如Branch为master,则生成Tag为master;

  • 时间戳为Tag:使用时间戳作为构建时的Tag;

  • 自定义Tag:以用户输入的内容作为构建时的Tag。

仓库类型

选择构建生成的Docker镜像需要上传到的镜像仓库,支持以下三种类型的镜像仓库:

  • 镜像仓库:使用默认的镜像仓库,对于时速云公有云平台,对应的hub地址为index.tenxcloud.com;

  • Docker Hub:使用Docker官方的hub作为镜像仓库;

  • 自定义仓库:使用用户自定义的镜像仓库。

构建缓存

系统默认打开构建缓存,主要是为了提高构建速度。

具体原理如下:如选择构建缓存,则构建Docker镜像的过程中,执行Dockerfile中定义的第一项任务(即拉取基础镜像)时,会首先检测本地构建节点是否保存了此镜像,如果有,则会直接使用它作为基础镜像,而不会重新从镜像仓库中拉取,因此可以达到减少构建时间的效果。如果希望每次构建都重新从仓库拉取基础镜像,则可以取消选择此项,代价是需要消耗更多的时间拉取基础镜像。

Flow子项目共享目录

如果TenxFlow中包含了多个子项目,可以在两个前后串联的子项目之间设置共享目录,用于共享文件。例如,前一个子项目进行代码编译,编译生成的包可以提取出来,共享给下一个子项目,进行镜像构建。

如下图所示,点击提取文件,然后在弹出框中设置共享目录。

img
img

完成设置后,在执行TenxFlow时,上一个子项目执行过程中,可以使用设置的共享目录(如图示/source_dir),存放需要共享的文件,如代码编译结果等。而下一个子项目执行过程中,可以从设置的共享目录(如图示/des_dir)中读取上一步共享的文件。

管理TenxFlow

部署服务

当TenxFlow构建成功后,可以将生成的Docker镜像部署为容器服务。如图,首先在页面上点击查看镜像,然后将镜像部署为新的容器服务。

img

部署完成后,可以针对该服务设置自动部署规则,详见下文说明。

TenxFlow执行记录

在TenxFlow菜单栏,点击TenxFlow执行记录,可以查看TenxFlow所有的执行记录。

img

自动部署

在TenxFlow菜单栏,点击自动部署,可以配置自动部署的规则,并可以查看自动部署的记录。

img

点击添加自动部署配置,可以添加一条自动部署规则。注意:在添加自动部署规则之前,需要提前使用该TenxFlow生成的镜像手动部署服务。

自动部署规则说明:

  • 镜像名称:选择该TenxFlow项目中生成的镜像名称;

  • 集群:选择期望实现自动部署的服务所在的集群;

  • 服务名称:选择期望实现自动部署的服务名称,如果配置之前未部署过服务,会提示使用该镜像立即创建一个服务;

  • 匹配规则:分为匹配版本和不匹配版本两种规则,如果选择匹配版本,则只有对应tag的镜像有更新时,才会触发自动部署;如果选择不匹配版本,则该镜像任意tag有更新时,都会触发自动部署;

  • 升级策略:分为普通升级和灰度升级两种规则,如果选择普通升级,自动部署的服务进行更新的时候,会一次性同时更新容器的全部实例;如果选择灰度升级,在部署了多个容器实例的情况下,会采用滚动升级的方式实现应用的更新。

img

构建通知

与创建TenxFlow时的配置类似(见第2部分-创建TenxFlow),在此处可以设置邮件通知规则。首先选择收件箱,默认使用用户注册邮箱,也可以选择其他邮箱,然后勾选希望收到通知的场景。

img

TenxFlow Yaml描述

此处可以查看当前TenxFlow项目对应的Yaml文件,用户可以参考Yaml文件写法,或者离线保存为模板,以便后续快速创建TenxFlow项目,实现复用。

img

如第2小节所述,在创建TenxFlow时,选择TenxFlow yaml方式定义,在编辑框中填入Yaml文件,即可一键快速创建TenxFlow。

删除TenxFlow项目

点击菜单栏中的设置,并点击删除该TenxFLow,将清除项目的所有历史数据以及相关的镜像。注意:该操作不能被恢复,请慎重操作。

img

侧栏导航
时速云微信
在微信上关注我们