LAVA的配置与使用

最近在看一个基于python django 开发的用于持续集成和自动化测试的开源项目--LAVA,期间被折磨的死去活来。倒不是代码很难懂,而是官方文档很久没有维护,代码一直在更新,很多地方文档跟代码已经对不上,网上也很难找到相关的资料,可能是国内大部分公司都使用的Jenkins的原因吧。LAVA跟Jenkins实现的功能还是很像的,区别在于细节方面,比如LAVA不需要提前定义Job,再比如LAVA可以实时回收任务执行日志,报表展示等。我对Jenkins了解比较少,所以孰优孰劣就不做评价。这篇文章简单介绍下LAVA的架构以及怎么把项目跑起来,由于找不到相关资料,我当时花了三天时间才搞定,踩了各种坑,很多地方是根据源码一点一点推出来的。留下点经验,以后如果有人想用的时候也能搜到点资料,哈哈!

先附上项目代码地址项目文档

 

LAVA数据库使用的是PostgreSQL、web框架使用的是Django

主要分为两部分:master、worker/slave

master主要主要用于挂载worker,与worker保持通信,将scheduler分配的任务下发到对应的worker,从worker接收job日志。

worker/slave主要作用是挂载设备,设备指的是用于执行job的机器,可以是真实设备也可以是虚拟设备。接收master指令对设备进行操作,收集日志回传到master。

主要功能

自动验证 -专为自动流程创建,提交和处理测试作业的结果以验证开发流程而设计。

并行调度 -多个测试作业同时在多个设备上运行。

多节点测试作业 -测试作业可以作为涉及多个设备的单个测试组运行。

硬件共享-在不同的组之间共享不常见的硬件以最大限度地利用

 

LAVA架构图

LAVA的配置与使用

下面是一个Job运行的大概流程

LAVA的配置与使用

使用的时候需要启动以下服务

Web:供用户查看worker和设备状态,增加设备,提交任务,查看任务执行结果,查看任务日志及报表等

lava-master:启动后会创建ZMQ通道,与worker保持通信

lava-slave:连接到master,定时往master发送消息保持心跳,接收master的消息

lava-logs:日志通道,用于实时传输日志

lava-publisher:这部分源码没有看,不知道具体做了啥。。。

lava-coordinator:同上。。。

 

下面是配置和启动LAVA的具体步骤

建议配置

系统:Ubuntu18.04.1

编译器:Python3.6.9

数据库:PostgreSQL

 

数据库安装及配置

在命令行执行以下命令

apt-get install postgresql

sudo apt-get install python-psycopg2

 sudo apt-get install libpq-dev

安装完连接到数据库修改密码,命令如下

sudo -u postgres psq

\password   然后输入新密码

\q退出

 

依赖库安装

未完待续。。。