My Blog

Based on Octopress.

Resume

翁翊成,男,来自黑龙江大庆,2003年毕业于大庆师范学院,04年来北京,曾经在电信、交通、金融行业的不同公司工作过,目前专注持续集成领域。

自我简介

写过几年程序,和服务器打交道比较多,目前作为持续集成的实践者和兼职系统管理员为一个英国公司服务,偶尔会去英国提供现场的支持与培训。

技术方面,有比较多的C/C++编码经验,有过Python开发经历,带过Flex/ActionScript项目,也有很丰富的Unix/Linux使用/维护经验,目前较为常用的工具为shell、Maven、libvirt(kvm)和Debian Linux。

熟练的Debian用户/管理员,对deb安装包制作非常熟悉,熟悉Debian的软件包管理机制。

puppet用户,通过puppet实施集中化的Linux系统配置管理,自动化的zabbix、nagios agent部署。

vim用户,喜欢文本编辑器与命令行多于IDE。


工作经历

10年 - 至今 九州瑞研

职位未定,高级开发?QA开发?

研发团队基础设施建设,持续集成体系的搭建、发布流程的规划及自动化支持体系的实现。

为开发团队提供的支持工作涵盖了svn仓库管理、构建脚本与产品安装包配置、持续集成计划配置、开发测试/QA测试环境管理、kvm虚拟机配置。

兼职系统管理员,虚拟机构建、lvm管理、name server及dhcp配置、nagios和zabbix agent配置、amanda备份配置及生产环境部署。

08年 - 10年 汇鑫银通科技有限公司

C软件工程师

后台账务系统开发(AIX/C)。后调到新项目部参与平台项目开发,负责前端Flex项目的开发。

07年 - 08年 北京创想空间

C++软件工程师

视频会议客户端开发。VC(ATL/WTL)方式开发,负责问答模块的开发,实现业务逻辑。

06年 - 07年 北京易华录科技有限公司

软件工程师

信号灯控制系统的开发与维护。VC6(ATL)/VB6开发的控制系统,为后台的COM组件进行编码,实现设备通信及数据库操作。

05年 - 06年 北京在信汇通

系统工程师

爱立信系统集成项目,网管系统实施及现场快速开发任务,工作环境为Solaris/C。

04年 - 05年 北京英特图科技有限公司

系统工程师

配合销售部门,在客户公司提供现场支持,主要目标为解决3D引擎移植过程中遇到的障碍。


联系方式

email:wengych@gmail.com

QQ: 173989958

微博:http://weibo.com/wengych

持续集成实施经历

我从去年开始为团队做持续集成实施,经过了一年多的实施,做了多次改进,从而形成了目前的发布流程。

最早的一个版本实现了项目代码自动编译并生成上线需要的zip包,这完成了打包发布的最基本需求。

这个版本的构建脚本使用了一段时间以后,sa团队希望能够直接提供Debian安装包。这一点我们不谋而合,于是我开始了构建脚本的改造。Debian包打包工作的难度超出了我的预计,为此我花了大量的时间阅读文档,编写安装脚本及测试,在今年夏天之后开启的所有项目,我们都很幸运的可以使用Debian安装包进行发布了。

在这一版本的构建脚本随后就给我带来了灾难性的麻烦:因为脚本本身也是在不断的改进过程中,而公司业务需要,我又得为每个新项目进行自动化构建得实施,同一套脚本每次都要在新的项目中拷贝一份,当进行了几个项目后,我便停下来对构建体系的重新规划。

在使用了这个新的构建脚本的期间,我们也重新定义了团队的持续集成计划,将构建计划划分为:Developing/Testing/Release。

  • Developing计划面向开发人员的提交,每次提交都会触发Developing构建计划的执行,Developing构建计划的执行结果是Debian软件包,软件包作为unstable版本存储到内部的Debian仓库;
  • Testing计划面向QA人员,当项目进展到可以由QA开始测试的阶段时,QA与程序员沟通确认,然后执行Testing构建计划,这个计划会将目前存储在Debian仓库中该项目的unstable版本软件包标记为testing版本,以表示此版本为测试专用;
  • 当测试通过并可以进行发布时,便可以在CI服务器上执行Release构建计划,这个构建计划会将testing版本的软件包标记为stable版本,用于发布。

通过这样得方式,我们将研发和测试流程与持续集成体系进行了整合,并通过软件包生命周期管理来区分开发、测试以及发布的软件包版本。

构建脚本在经过一段时间的重构后,目前我们有了最新的一套基于模板方式运作的打包构建方式。首先我将安装脚本拆分出项目自身的编译打包脚本,独立为一个模板项目;其次把打包任务作为一个模板项目,通过变量的方式引用项目的二进制文件、配置文件及安装脚本。将安装脚本和安装包制作拆分出来以后所有针对CI实施的主要工作就面向项目构建本身了,不再为维护不断复制出来的东西而伤脑筋。

使用reprepro创建Debian仓库

reprepro是一个搭建本地debian软件包仓库的工具。

前一段时间在国内的团队实施了Debian仓库辅助项目发布流程,现将仓库实施部分的概要和思路纪录下来。


配置

  • 首先选择一个路径部署仓库,仓库需要能够直接通过web访问,所以比较偷懒的方式是直接部署到/var/www/debian目录下。
  • 仓库路径选择好之后,再创建conf目录来保存仓库配置。
  • 在conf目录中创建一个名为distributions的文件,并写入如下内容:

Codename: unstable
Components: group
Architectures: i386 amd64

Codename: testing
Components: group
Architectures: i386 amd64

Codename: testing
Components: group
Architectures: i386 amd64
  • 使用空行区分不同的distribution,以上配置学习了Debian的版本机制,这样就可以采用类似Debian的软件包版本区分来管理自己私有的Debian仓库。
  • group可以采用公司或组织名称,用以标明软件包分发者。

添加新的Debian软件包

  • 软件包加入仓库只需要使用includedeb指令

reprepro -b /PATH/TO/REPO/ includedeb unstable package.deb
  • includedeb指令后面的参数分别表示加入仓库软件包的codename和源

使用仓库

  • 在服务器中配置/etc/apt/sources.list.d/local.repo.list

deb http://repo-server/debian/ unstable group
  • 然后即可通过apt-get命令安装本地仓库中的软件:

sudo apt-get update; sudo apt-get install package

关于reprepro搭建Debian仓库更多详细细节,参考其网站