云计算国产化之路 vnc登录 文件系统直通(virtio-9p) 扩展qemu接口 gpg WARNING 珍藏博客 虚拟内存情况dommemstat分析 免密码自动登录脚本 Linux网桥 测试网段IP占用情况 Linux 进程状态 systemc强制依赖 调试openstack ut uefi p2v 重做ubuntu内核 virsh创建虚拟机简介 virtio IO路径 虚拟化层升级后磁盘无法卸载卷 vmtouch使用 Taint flags 主机和虚拟机文件共享处理的几种方法 kvm分析工具 kvm中对磁盘的io cache 虚拟化不同导致的guestos中软件安装差异(未解决) 设备直通(PCI Assignment)到底是咋整的 virtio到底是咋整的 内核启动参数 虚拟化实时性提升(零)之配置步骤 中断虚拟化(pic)到底是咋整的 中断虚拟化(apic)到底是咋整的 Raid卡配置丢失导致服务器无法启动 tainted kernels cpu stuck for 23s问题分析 虚拟化实时性提升(一)之hostOS切换为强实时系统 内存虚拟化到底是咋整的 qemu-kvm中vcpu虚拟化到底是咋整的 风河虚拟化技术点分析 使用qga的好处 qemu迁移代码分析 虚拟机串口配置及其导出到主机pts和console.log System-based I/O vs. Raw I/O 虚拟机使用Hugepage(大页) 硬件辅助分页(hardware assisted paging) 修改centos7默认启动项目 virtio的工作流程——kernel中virtio-pci初始化(2) virtio的工作流程——qemu中virtio-backend初始化(1) qmp ceilometer取不到memory.usage指标 Virtio-Balloon超详细分析 slabtop输出 虚拟机磁盘cache导致的host os kernel崩溃 虚拟机cpu和memory性能优化测评 PCI配置空间(PCI Configuration Space) centos下网卡设备直通(VT-dpci passthrough)遇到的问题及其解决思路 libguestfs详解 yum卸载软件包及其依赖 通过原始Centos ISO来定制自己的ISO centos下网卡设备直通(VT-d,pci passthrough) (占位符)window虚拟机中拔盘如何通知到libvirt和qemu后端的 cirrus漏洞分析CVE-2017-2615 XSA-208 qcow2随笔 控制寄存器概览 ceilometer对接postgresql 解压initrd和vmlinuz qemu guest agent验证 QEMU升级指南(待续) ubuntu中kdump的配置 qemu(2.3)接口梳理 热迁移导致的FC存储场景下的multipath卷残留问题分析 virsh命令(4)secret,snapshot,pool,volume部分 virsh命令(3)之interface,filter,network virsh命令(2)monitor,host,nodedev部分 virsh命令(1)之domain部分 QEMU内存管理之FlatView模型(QEMU2.0.0) ovirt基于sanock的高可用(主机粒度HA) Sanlock防脑裂场景功能测试用例 gnocchi配置及与ceilometer对接指南 make patch for libvirt in centos centos使用sanlock指导 高可用nfs资料 ubuntu14中使用sanlock指导 LVM操作指南 sanlock相关功能验证流程汇总 make patch for libvirt in ubuntu libvirt.so.0-version `LIBVIRT_PRIVATE_1.2.7' not found gdb debug libvirt 基于ubuntu社区源码包编译libvirt compile libvirt(centos) No PCI buses available nfs lead to Linux halt nfs install and config anti-virus for cloud platform nova fetch image from glance(something about _base) token auth process ovs入门指南 virt software anti-virus something about ceilometer disk sample context interview questions openstack vm injection openstack Restful and RPC murano 概览 创建虚拟机流程(compute节点)之网络创建 创建虚拟机流程之compute_api之虚拟机实例填充之配额检测 创建虚拟机流程之compute_api之基本参数生成 创建虚拟机流程之compute_api 创建虚拟机流程(主) 创建虚拟机之image 创建虚拟机流程之准备网桥 创建虚拟机流程之virt 创建虚拟机流程之compute节点 CI/CD研发流程之工程创建 CI/CD研发流程之代码合入 CI/CD研发流程之UT(单元测试) 向openstack社区合入代码记 openstack/ceilometer/gnocchi杂谈 影子页表原理 mem_add(exec.c) qemu编译安装调试 openstack/ceilometer/gnocchi之Grafana简介 openstack wiki etcd openstack计量ceilometer openstack计费cloudKitty enventlet backdoor USB 安装VMWARE ESX pycharm设置指南 无法执行modprobe -a kvm-intel解决办法 QEMU配置项 网络不通小记 libvirt之XML(虚拟机定义文件) openstack-horizon 证书认证 ceilometer与ceph对接 openstack定时任务剖析(TODO) 服务器重启后mongodb进程无法启动 ubuntu14下新增openstack服务到service的导引 ERROR 1045(28000)-数据库连不上 Python两个内置函数—locals和globals unknown exit, hardware reason 31

CI/CD研发流程之代码合入

2015年11月03日

概述

上图CI/CD流程中涉及研发的过程,主要涉及三部分(注意顺序),简述如下:

①代码入库 代码提交到仓库的过程。

②单元测试 代码被提交后,触发单元测试,代码回合。

③前置准备 使用这么一套流程,需要做一系列整合。

术语

client

执行机,就是你提交代码的机器。一般是一台Linux,需要提交代码同学自己准备

jenkins

跑单元测试,可以定制周期,或者由其他组件触发(需要各组自己准备个slave节点,详见UT那篇博文)

gerrit

代码检视系统,代码先提交到这里,触发单元测试,并且邀请人员检视后方可入git(gerrit已经搭建好,各组创建工程即可,参见创建工程那篇博文)

git

代码托管仓库,这里是gitlab

代码合入流程

1.登录执行机

也就是你提交代码的机器,一般为Linux(因为gerrit在windows下无版本)。 这里以一台Ubuntu为例。 (注:除了第7步是在gerrit的portal上执行,以下都是在执行机上执行)

2.安装git

3.配置git

git config --global user.name "byhan"
git config --global user.email "byhan@fiberhome.com"

可通过git config –list命令查看,如下图

4.安装git-review

sudo apt-get install git-review

5.生成秘钥

ssh-keygen -t rsa -C "byhan@fiberhome.com"'

执行完成后,会生成一个公钥和一个私钥,如下图

(注1:注意替换为自己的邮箱) (注2:文件目录可以采用默认路径,也可以指定,这里指定其他路径是为了兼容社区gerrit和公司的gerrit) (注3:推荐使用默认路径,毕竟代码提交至公司的概率大的多)

6.添加私钥至本机

ssh-agent bash (不执行ssh-agent这步可能会报错:Could not open a connection to your authentication agent)


ssh-add /work/fitos/id_rsa  (将私钥添加至本机的ssh服务中)

(注:若生成证书的时候路径为默认路径,这里可以不设置) (注:当ssh客户端重启,或者执行机重启后,需要重新执行ssh-add命令)

7.添加公钥到gerrit和gitlab

用个人账户登录(默认为邮箱前缀和密码)gerrit的portal 将上述执行机生成的公钥(就是那个id_rsa.pub文件的内容)添加至gerrit 点击add (gitlab同理)

8.克隆源码

重新登录执行机,创建和进入自己的代码目录 本人的工作目录是/work/fitos/1.o 然后从gitlab上克隆源码

git clone http://*.*.*.*/yp/gerrit-test-2.git

(这里的IP为gitlab的IP)

(注1:这里使用http方式) (注2:如果使用git方式,需要将生成的公钥添加至 gitlab)

9.修改工程目录下的.gitrevew文件,并上传

当你使用gitreview命令时候会读取.gitrevew的配置,他好知道向哪里提交。

[gerrit]
host=*.*.*.*
port=29418
project=openstack-dev/cloudkitty-dashboard

使用下面的git命令,修改提交至gitlab

git add .gitreview
git commit .gitreview -m ‘add .gitreview file’
git push origin master

(注1:这里直接用git push的方法直接提交到gitlab即可,或者也可以直接到gitlab的portal上去修改) (注2:如果已经修改过,忽略此步骤) (注3:这里的project统一加分组,分组方法使用gitlab上的分组) (注4:将上面的*修改替换为我们gerrit的IP地址) (注5:project项,格式为分组/项目名称 加斜线前的分组,分组的名字和gitlab上保持一致 如你这个项目在gitlab上分组是openstack-dev这里就写openstack-dev 需要注意的是,这一条只是我们的约定)

10.添加远端(此步骤可忽略,参见注解)

将gerrit地址添加为git的远端(这里的IP信息为gerrit的IP)

git remote add gerrit ssh://byhan@¥.¥.¥.¥:29418/cloudkitty.git

(注1:如果工程的.gitrevew文件已经修改,且对对应地址为我们gerrit的地址,则不需要此步骤) (注2:.gitreview文件默认是社区的gerrit地址)

14.提交检视

git review -v ![](http://i.imgur.com/zzSZNyn.png)

15.检视

登录gerrit系统,在个人变动里可以查看到刚刚的提交

点开这次提交记录,邀请相关同学进行检视 另外,如果进行了正确的设置,提交会触发单元测试,详见后文

vertify +1 两个codereivew +1 满足上述条件后,管理员直接+2操作,会出现submit按钮,点击会提交至gitlab

当发现submit是灰色的时候,需要在本地执行git reset操作