个人总结
- DevOps/Build/Release 领域的 Tech Lead。
- 从零建立起团队的 DevOps,并在整个团队以及整个部门分享最佳实践。
- 从事过自动化测试、软件开发工作,从 2018 年开始担任 DevOps/Build/Release 工程师。
- 熟悉 Windows、Linux、AIX、Solaris、HP-UX 操作系统、软件开发生命周期、DevOps 工具链。
- 善于做 “Scan-Try-Scale”,乐于关注 DevOps 行业的最新发展和技术,愿意尝试并应用最佳实践到团队。
- 主要开发语言是 Python/Shell/Golang/Groovy 来完成一些 DevOps 的相关工作。
- 开源爱好者。业余时间创建并贡献 cpp-linter,commit-check,conventional-branch等开源项目。目前 cpp-linter-action 已有 600 多名用户,被微软、Linux基金会等知名项目所使用。
- 知识分享者。七年来在我的博客和微信公众账号 “DevOps攻城狮 “上分享上百篇技术文章,有上百万的阅读量。
工作经历
在立陶宛维尔纽斯继续在担任 Rocket MultiValue DevOps/Build/Release 工程师职务。
Rocket MultiValue Build/Release/DevOps 工程师,负责与 DevOps 相关的产品构建和发布、基础设施管理以及 CI/CD 管道设计和实施。
在以下产品中扮演 Build/Release/DevOps 角色
- MultiValue Application Server: UniVerse、UniData、jBASE、OpenQM。
- MVAS Tools: UCC、UDNK、MVVS、UOPY,以及 UDBT 和 SBXA 。
实施的 DevOps 最佳实践
- 配置即代码(CaC)–将所有构建工作从手动或 Bamboo 转移到 Jenkins,并创建 Jenkins 共享库,以更好地管理自动化构建和扩展。这为团队提供了自助式构建服务,节省了团队的时间,也节省了我的时间,而且在发生任何灾难时,CaC 可以快速恢复。与其他团队分享最佳实践。
- 基础架构即代码(IaC)–创建了 ansible-playbooks 和 mv-infra 软件仓库,将构建、Jenkins 服务器和开发基础架构作为代码进行管理,帮助团队快速提供开发/构建环境,防止业务发生灾难。
- 创建 Docker Images 软件仓库,对 MVAS 产品进行 Dockized 以实现容器化 - 采用了 DevOps 的许多最新实践,例如 Docker buildx bake 构建镜像,使用 Docker Health check、pytest 和 CI/CD 测试镜像,使用 Renenote bot 管理依赖关系,以及使用 Kubernetes 部署 Docker 镜像。
提出并实施的倡议
- 提出 DevOps 成熟度徽章,帮助 MV 团队更好地衡量我们的 DevOps 成熟度,该徽章已扩展到 Rocket R&D。
- 建议并实施 MVAS 团队采用 Git Conventional Commit,并推广到整个 MV 团队。
- 使用 Jira 管理虚拟机 - 创建了 Jira 并编写了 Python 程序来自动管理虚拟机,以解决团队和管理人员管理虚拟机的问题,该程序已应用于整个 BU。
- 代码覆盖率 - 几十年来首次帮助 UniVerse 和 UniData 获得代码覆盖率结果,并为 U2、jBASE、MVVS 等创建覆盖率在线报告。
- Rocket Build - 始终贡献创新理念,MV Intelligent Terminal 荣获 2019 年 Rocket Build 一等奖和 CPO 奖。VitalSign 被选中并进入 2020 年 Rocket Build 决赛。
- 在加入 MV 之前,我是 Rocket Discover 自动化测试带头人,带领团队从零开始实施自动化测试,提高回归测试效率。
京东测试工程师
- 负责京东财务组多个系统的功能测试, 自动化测试脚本的开发, 持续集成。
软件测试, 历经过两个大型项目的软件测试工作。
- 外汇管理局, 负责用例编写和功能测试。
- 中移动云平台, 负责云平台里虚拟机管理测试用例编写和功能测试。
项目
在工作中和工作外开发的独立项目。
u2cicd - 创建 MVAS Jenkins 共享库,实施了配置即代码(CasC), 在各项目间共享通用代码从而优化 SDLC。
docker-images - 容器化 MVAS 产品。该存储库采用了最新的 DevOps 实践,包括使用 Docker buildx bake 构建镜像、health checks 和 pytest 进行测试、使用 Renenote bot 进行依赖性管理,以及使用 Kubernetes 部署 Docker 镜像。
ansible-playbooks - 将 MVAS 构建、开发、Jenkins 服务器等基础架构作为代码进行管理(IasC), 使团队能够快速提供开发和构建环境,最大限度地降低灾难风险。
U2Box CLI - 一个使用 Go 开发的一个命令行工具, 通过交互式的命令行来帮助开发和测试快速轻松地准备需要的开发及测试环境。
Quality Gates - Quality Gates 是将编码规范, 安全扫描, 代码分析, Git Squash, TODO, Spelling Checks 等功能集成到 Pull Request 中从而帮助团队提高编码规范和代码质量。此项目入围 2021 年 Rocket Build 决赛。
MV Intelligent Terminal - 通过 MV UOPY API 为 MV 产品创建智能命令行, 包括自动补全, 高亮显示。此项目获得 2019 年 Rocket Build 第一名和 CPO 双项大奖。
MV VM Management with JIRA - 利用现有系统 Jira 消除通过 Excel/Wiki 管理虚拟机所带来的额外工作, 通过 Jira 提供可视化 Dashboard 和查询, 帮助团队梳理和管理大量的虚拟机资源。
cpp-linter - 为 C/C++ 代码格式化和静态分析提供 CI 和 git hooks 的解决方案
commit-check - 作为 Yet Another Commit Checker 开源平替版, 提供了针对提交信息、分支命名、提交作者用户名和邮件等检查。
cpp-linter-action - 一个用于 C/C++ 代码 Lint 的 Github Action, 整合了 clang-format 和 clang-tidy, 将分析结果通过评论或是注解的方式告知开发者。
clang-tools - 一个支持所有版本的 clang-format 和 clang-tidy 的 Docker 镜像。
atlassian-api-py - 使用 Python 编写的 Atlassian Rest API 库, 方便与 Atlassian 的 Jira, Bitbucket 进行持续集成。
Conventional Branch - 推广和创建常规分支规范网站
微信公众号「DevOps攻城狮」 - 在公众号上分享 DevOps 领域的知识, 通过这种方式让自己更好的掌握知识和学习新知识。