Macaca Mac OSX 布署 Reliable

Sencho Kong · 2016年04月27日 · 最后由 PEPSI 回复于 2018年11月20日 · 2543 次阅读
本帖已被设为精华帖!

本文主要分享一下从用户角度布署 Reliable 时遇到的一些问题和使用感受。

Reliable 是什么?与 Macaca 有什么关系?

Reliable官方地址,Distributed reliable continuous integration service,这是官方的说明,是一个持续集成平台 (CI),是一个平台当然是有可视界面.首次接触时就搞不清楚他与 Macaca 有什么联系,为什么在 Macaca 的布署文档里有一个 CI Service。至于什么是 Macaca 这里就不再讲了,论坛里已经有很多贴能够说明。后来试着发一封邮件给作者达峰了解这个产品,才知道Macaca 是集成在 Reliable 里的模块,用户可以使用 Macaca 写测试脚本后,在 Reliable 里创建测试任务,查看测试结果等操作。由于这个项目刚开源,文档有好多地方还未有完善,既然这是一个 CI 平台,当然在测试前还可以进行应用打包,测试完成后还可以进行产品发布等操作,达峰说团队正在努力完善中。Reliable 这个产品开源对行业的贡献是十分具大的,所以希望本文能够帮助到想使用它的朋友,并且能为 Reliable 的发展为一分贡献。

Reliable 布署

Reliable 的布署使用 Docker 进行布署,本人也是首次接触 Docker,是按照 Docker 的官方文档进行安装,在 Mac OS 上安装都是挺傻瓜的,没什么技术含量,这里不多说,论坛也有贴子介绍用 Docker 做自动化持续集成 - Macaca 部署完整版

1. 首先安装 Reliable 的 mastermaster deploy

安装成功后会有下图的 4 个容器,并且是有显示正常运行的绿色图标

2. 安装 Reliable 的 slaveslave deploy
为什么要装 slave?因为 Reliable 是分布式架构,mater 主要是任务调度,slave 才是真正跑用例执行任务的,还有就是可以分负载均衡,当然你用例多的时候还可以加 slave.安装成功后把 slave 跑起来。

reliable server -m <reliable-master:port> --verbose

reliable-master 是你的 master 主机地址

OK! 如果你能顺利到跑到这里已经是成功了。let's go on!

3. 看看 Reliable 庐山真面

这里登录进去,没什么好说的

这里看到已经挂了一个 slave,说明是成功的,如果 slave 的数量为 0 请启动 slave 再刷新页面。

创建一个任务,这里的任务 task 就是你一系列的用例,可以是一个新功能的用例,可以是一个全回归用例,用例使用 Macaca 进行编写,这里我们使用官方提供的 ipa 包进行测试,用例也是官方的,有少少改动,删除了 desker top 的用例,只是保留了 iOS 的,并例把搜索关键字改为我公司的了(这里打了小小广告,望谅)。

用例仓库地址 https://github.com/sencho/macaca-test-sample
此用例仓库里要添加一个.macaca.yml 文件,内容为 webdriver_server: true
填写用例仓库地址,时间间隔。

添加任务后 slave 的控制台会开始跑

以下是跑用例的截图



最后用例都成功,如果想手动再跑一次,可以按 Retry.

祝大家顺利布署,欢迎交流,最后再次感谢作者达峰的帮助!

QQ:147886833

共收到 26 条回复 时间 点赞
仅楼主可见
仅楼主可见

命令行没报错,但也没有执行任务,输出信息中 port: undefined。
有两个问题请教:
1、Git 上有 app,下载会出现超时情况?如果删除 app,Git clone 的时候回因为没有 app 而运行不起来;
2、Git clone 的代码存放在哪个地方?

flow.js:99:12 [worker:1] pid:33862 Task 59c8b432fcec181e00801c9f start git clone...
flow.js:116:12 [worker:1] pid:33862 Task 59c8b432fcec181e00801c9f start git clone success!
flow.js:127:14 [worker:1] pid:33862 Sending 59c8b432fcec181e00801c9f data ...
channel.js:69:16 [worker:1] pid:33862
<--- zmq message
{ type: 'task',
taskId: '59c8b432fcec181e00801c9f',
sysInfo:
{ cpus:
[ { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 13184630, nice: 0, sys: 13457990, idle: 133796490, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4510840, nice: 0, sys: 3650390, idle: 152267460, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 11846810, nice: 0, sys: 10018990, idle: 138562930, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4584800, nice: 0, sys: 3636000, idle: 152207840, irq: 0 } },
[length]: 4 ],
memory: 0.011448860168457031,
type: 'Darwin',
platform: 'darwin',
uptime: '5d 22h 55m',
release: '16.7.0',
hostname: 'bogon',
port: undefined },
status: 'busy',
body: 'done! your test case exited with code \n\n' }
flow.js:72:12 [worker:1] pid:33862 Task is end with 59c8b432fcec181e00801c9f data...
channel.js:69:16 [worker:1] pid:33862
<--- zmq message
{ type: 'task',
taskId: '59c8b432fcec181e00801c9f',
sysInfo:
{ cpus:
[ { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 13184630, nice: 0, sys: 13457990, idle: 133796490, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4510840, nice: 0, sys: 3650390, idle: 152267460, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 11846810, nice: 0, sys: 10018990, idle: 138562930, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4584800, nice: 0, sys: 3636000, idle: 152207840, irq: 0 } },
[length]: 4 ],
memory: 0.011448860168457031,
type: 'Darwin',
platform: 'darwin',
uptime: '5d 22h 55m',
release: '16.7.0',
hostname: 'bogon',
port: undefined },
status: 'available',
body: 'false',
bodyStatus: 2,
extra: {} }
@sencho

命令行没报错,但也没有执行任务,输出信息中 port: undefined。
有两个问题请教:

flow.js:99:12 [worker:1] pid:33862 Task 59c8b432fcec181e00801c9f start git clone...
flow.js:116:12 [worker:1] pid:33862 Task 59c8b432fcec181e00801c9f start git clone success!
flow.js:127:14 [worker:1] pid:33862 Sending 59c8b432fcec181e00801c9f data ...
channel.js:69:16 [worker:1] pid:33862
<--- zmq message
{ type: 'task',
taskId: '59c8b432fcec181e00801c9f',
sysInfo:
{ cpus:
[ { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 13184630, nice: 0, sys: 13457990, idle: 133796490, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4510840, nice: 0, sys: 3650390, idle: 152267460, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 11846810, nice: 0, sys: 10018990, idle: 138562930, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4584800, nice: 0, sys: 3636000, idle: 152207840, irq: 0 } },
[length]: 4 ],
memory: 0.011448860168457031,
type: 'Darwin',
platform: 'darwin',
uptime: '5d 22h 55m',
release: '16.7.0',
hostname: 'bogon',
port: undefined },
status: 'busy',
body: 'done! your test case exited with code \n\n' }
flow.js:72:12 [worker:1] pid:33862 Task is end with 59c8b432fcec181e00801c9f data...
channel.js:69:16 [worker:1] pid:33862
<--- zmq message
{ type: 'task',
taskId: '59c8b432fcec181e00801c9f',
sysInfo:
{ cpus:
[ { model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 13184630, nice: 0, sys: 13457990, idle: 133796490, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4510840, nice: 0, sys: 3650390, idle: 152267460, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 11846810, nice: 0, sys: 10018990, idle: 138562930, irq: 0 } },
{ model: 'Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz',
speed: 2700,
times: { user: 4584800, nice: 0, sys: 3636000, idle: 152207840, irq: 0 } },
[length]: 4 ],
memory: 0.011448860168457031,
type: 'Darwin',
platform: 'darwin',
uptime: '5d 22h 55m',
release: '16.7.0',
hostname: 'bogon',
port: undefined },
status: 'available',
body: 'false',
bodyStatus: 2,
extra: {} }

24楼 已删除
23楼 已删除

请教下,使用 make adduser 命令创建管理员账号,成功后登录 http://localhost:8080/dashboard,提示没有此用户。
然后通过 web 注册普通用户,可以登录,之后查找数据库也没有找到。
请问通过命令和 web 注册的用户在哪个 db 里面存呢?

db.createUser(
... {
... user: "admin",
... pwd: "admin",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
 "user" : "admin",
 "roles" : [
  {
   "role" : "userAdminAnyDatabase",
   "db" : "admin"
  }
 ]
}

登录的时候提示没有此用户?

show collections
admin
system.users
system.version

db.admin.find().count();
0

@tediwang reliable 要求能够对 Node.js 二次研发 定制插件,建议你用 jenkins

测试通过后点击查看报:
reliable render template:task failed
这个怎么解决呢?
@sencho

可以测试 appium 的脚本吗

Reliable 的 master 和 slave 怎么安装的啊,上面一句话就带过了,具体步骤在哪里安装,命令什么的,初学者有点闹不懂@xdf

链接打不开也

#15 楼 @cxf 可进群讨论 287162474

😰 我的 case 如果全部执行成功,没有 retry 这个按钮额,只有失败的才有 retry

已经成功的创建了 new Task。不过 slave 控制台没有看到什么日志。话说我的测试用例 如果是通过 外部传入参数的方式执行。比如
macaca run ios 活着 run andriod,这种 task 里面怎么给执行参数呢

第一步的链接打不开

  1. 首先安装 Reliable 的 mastermaster deploy

用 Docker 果然很方便

#9 楼 @xdf reliable 只能调度 Macaca 编写的脚本任务吗? 如果是 Appium 编写的脚本,能否使用 reliable 开启测试,并收集测试数据。我看了一下官方的文档,没有这方面的介绍呢

#9 楼 @xdf 好的 谢谢 . 我试一下.

#8 楼 @kilmer master 支持 Docker 的,Docker 环境有就好

#6 楼 @xdf 在 Windows 下能部署吗?

#5 楼 @jsenjoy O 了!继续加油

Macaca 与 reliable, jenkins, travis-ci, gitlab-ci 这些集成系统配合使用时候的详细配置,我们抓紧在文档中给出

@monkey 申请加精!

赞!很详细的介绍了 Reliable 和 Macaca 的使用。

Reliable 文档的确不完善,抱歉,我们会紧赶的

很详尽的使用文档 macaca 与 reliable 的关系理清楚了 很棒!

非常不错的实践啊 👍

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册