6.2.4 任务管理服务
通过提供完备的接口,部署服务和测试服务可以各自完成自己的工作,但是想要将流程串联起来,构成持续集成的流水线,就需要有另一个服务来管理和调度任务了。我们首先支持了Web Hook触发的持续集成任务,跟踪产品代码的更改。我们的代码是通过Gitlab管理的,如图6-7,注册Web Hook到代码库:
图6-7 注册Web Hook
当开发提交代码到指定分支时,Gitlab会向我们注册的接口post数据, 如代码清单6-11所示。
代码清单6-11 Web Hook数据体
1. { 2. "object_kind": "push", 3. "event_name": "push", 4. "before": "1cd2b697b63851f13bf1254329554da3a26e111c", 5. "after": "36a1a5d9785c808a2341840aef50baecfbd9a973", 6. "ref": "refs/heads/master", 7. "checkout_sha": "36a1a5d9785c808a2341840aef50baecfbd9a973", 8. "message": null, 9. "user_id": 4427, 10. "user_name": "***", 11. "user_username": "***", 12. "user_email": "***@jd.com", 13. "user_avatar": "http://git.jd.com/uploads/-/system/user/avatar/4427/avatar.png", 14. "project_id": 8533, 15. "project": { 16. "name": "***", 17. "description": "Automatic Deployment UI.", 18. "web_url": "http://git.jd.com/***/***", 19. "avatar_url": null, 20. "git_ssh_url": "git@git.jd.com:***/***.git", 21. "git_http_url": "http://git.jd.com/***/***.git", 22. "namespace": "***", 23. "visibility_level": 10, 24. "path_with_namespace": "***/***", 25. "default_branch": "master", 26. "ci_config_path": null, 27. "homepage": "http://git.jd.com/***/***", 28. "url": "git@git.jd.com:***/***.git", 29. "ssh_url": "git@git.jd.com:***/***.git", 30. "http_url": "http://git.jd.com/***/***.git" 31. }, 32. "commits": [ 33. ...... 34. ], 35. "total_commits_count": 1, 36. "repository": { 37. ...... 38. } 39. } |
通过解析以上数据,读取代码库地址和分支名,判断是否有定义相应的持续集成任务,如果有的话,任务就会被触发,在界面上可以就看到任务执行的状态,如图6-8所示:
图6-8 CI任务状态页
当任务结束后,就可以得到配置好的测试环境和测试报告了,如图6-9所示:
图6-9 CI任务结果页
6.2.5 扩展
以上仅介绍了我们团队实现的最基本的持续集成过程,其实持续集成的内容和外延远不止这么简单。团队可以根据自己的需求在流水线上接入代码质量扫描工具比如Sonar,或者接入Gerrit来实现代码审查流程。这些扩展属于比较简单直观的,进一步的,可以通过将持续集成作为产品发布过程中的第一个环节,配合其他形式的自动化或手动测试以及审批流程,将其扩展为持续发布系统。如果再配合软件生命周期管理工具,比如Rational,就可以为团队打造出一个相对完整的DevOps环境了。
6.3 小结
持续集成对于采用敏捷开发模式的团队来说是非常重要的技术手段,在实施时需要根据自己的规模,资源,以及环境来选取合适的实现方式。这一章并没有详细介绍怎样使用Jenkins来搭建持续集成环境,因为已经有太多的资源去描述如何使用Jenkins。我们想把本团队在转型过程中开发的适应于内部容器平台的持续集成系统介绍给大家,抛砖引玉,希望能给读者带来新的灵感,提供新的思路。
相关推荐:
自动化测试和测试开发—京东质量团队转型实践(2)
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。