Openstack研发工程师需要懂得的一点点集成测试

Openstack研发工程师需要懂得的一点点集成测试

Openstack开发工程师,都是在开源的基础上来进行二次开发,修改代码的时候就有可能造成改动引发,而众所周知的,研发工程师都是很懒的,不想写测试用例,也不懂得基本的集成测试。

Openstack的集成测试框架用的是tempest了,我依然沿用开源的方式来搭建我自己的集成测试框架。我使用集成测试框架为jenkins + Docker + tempest,来我们一步一步开始搭建我的集成测试环境。

概述

我们在跑tempest集成测试案例的整个流程如上图所示,我们是jenkins来作为管理,我们有两个任务,第一个任务A启动docker作为slave,并且触发B任务,B任务中执行tempest案例;B任务为tempest任务,此任务执行在A任务创建的docker环境中,执行tox –e smoke 来跑我们的测试案例,执行完案例之后,A任务会删掉创建的docker,回收资源。

安装docker

Ubuntu环境下安装docker:

apt-get update

sudo apt-get install apt-transport-https ca-certificates

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" >>/etc/apt/sources.list.d/docker.list

sudo apt-get update

sudo apt-get purge lxc-docker

apt-cache policy docker-engine

 

sudo apt-get update

sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

 

sudo apt-get update

#安装docker

sudo apt-get -y install docker-engine

 

#默认让docker启动

chkconfig docker on

 

#修改docker启动选项,添加host
vi /etc/default/docker

DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:6732"

service docker restart

 

centos下安装docker:

一条命令搞定:

yum install –y docker

 

#修改docker启动选项,添加host
vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald -H=unix:///var/run/docker.sock -H=0.0.0.0:6732'

service docker restart

搭建jenkins环境

安装完成docker之后,就需要搭建jenkins环境了,有了docker,当然我们jenkins也要在docker中了,所以部署jenkins就是非常容易的事了。

 

chown -R 1000 /home/my_jenkins/
docker run --name myjenkins -p 8080:8080 -p 50000:50000 --privileged=true -v /home/my_jenkins:/var/jenkins_home jenkins

 

我们把jenkins工程跑到本地/home/my_jenkins/目录下,需要给他赋值1000的权限,否则运行jenkins可能会出错。

jenkins docker运行起来,就可以通过http://<host_ip>:8080登录了,在登录的界面中,会选择安装插件,设置初始用户名与密码了。最后就进入了如下图所示的界面。搭建jenkins环境完成。

 

添加节点

系统管理à管理节点à新建节点,然后输入必要的信息,如下图所示。

注意:你添加的的节点需要要java-jdk,需要安装docker服务。

只有安装了docker服务,才能在这个节点启docker。

安装jenins的docker插件

系统管理à管理插件,选择可选插件,在搜索框中输入docker,如下图所示,安装docker plugin.

建议把插件Parameterized Trigger Plugin安装上,如下图所示,这个插件非常好用,可以阻塞的触发其他的job。

安装完docker插件之后,需要配置云。

系统管理à系统设置,拉倒最下面,会看到如下图所示的界面,点击新增一个云,选择docker。

 

 

增加云之后,需要配置云的基本信息,如下图所示

name: tempest_slave 云的名称,自己定义。

Docker URL: http://162.3.160.50:6732 这个是docker的rest api的访问地址,在我们安装docker的步骤中,我们在docker启动选项中添加了host,就是因为可以通过rest api操作我们的docker。

Docker Image : 162.3.160.50:5000/tempest:10 这个就是你的镜像名称,也可以是其他的镜像,比如社区上evarga/jenkins-slave

 

配置好了,就可以跑我们的第一个任务了,如下图所示,选择 构建一个自由风格的软件项目。点击ok。

ok之后,就如下图所示的配置页面

我们选定在162.3.160.50这个节点运行我们的docker slave,因为在添加节点章节,已经把这个节点加入了,并且安装了java与docker服务。

在构建中,我们有两个步骤:

  1. Start/Stop Docker Containers

    如下图所示,Docker Cloud name:tempest_slave,就是我在系统设置设置cloud名称

    Template ID: 162.3.160.50:5000/tempest:10 ,就是我设置的镜像名称

  2. Trigger/call builds on other projects

    如下图所示,我们触发另外一个任务tempest,此任务跑在步骤1启动的docker中。

我们在来看一下另外一个任务tempest,如下图所示,最重要的要设置Restrict where this project can be run 为template ID 为162.3.160.50:5000/tempest:10 的label。

 

点击任务tempest_docker的立即构建,就可以跑起来了。如下图所示。

 

至此,我们就可以跑我们的tempest了。整个流程就是,任务tempest_docker 启动docker,作为一个docker slave, 并且触发另外一个任务tempest,任务tempest就跑在docker slave中,就可以执行我们tempest命令了。每次执行都是一个全新的tempest环境。动动手指,每天就可以跑tempest,还可以跟上库触发跑tempest,每天都可以知道自己上库的代码是否有改动引发了。

制作tempest镜像

在我们配置jenkins时,用到了一个tempest镜像,这个镜像的制作Dockfile如下:

FROM centos:7

MAINTAINER laoyi <yibo_grace@163.com>

 

# install dep lib

 

RUN yum -y install epel-release

RUN yum clean all && yum list && yum repolist all

RUN yum install -y gcc git libxslt-devel openssl-devel libffi-devel python-devel python-pip python-virtualenv

RUN pip install junitxml

 

RUN git clone https://github.com/openstack/tempest.git && cd tempest && python setup.py install

RUN mkdir -p ~/.pip && echo -e "[global]\ntrusted-host=pypi.douban.com\nindex-url = http://pypi.douban.com/simple/" >>~/.pip/pip.conf

RUN cd tempest && pip install -r requirements.txt

RUN cd tempest && pip install tox && tox -egenconfig

RUN cd tempest && mkdir -p /etc/tempest && ls -l /etc/tempest && ls -l etc && cp etc/tempest.conf.sample /etc/tempest/tempest.conf

 

RUN yum install -y java

RUN yum install -y openssh-server

 

RUN mkdir -p /var/run/sshd

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''

 

# Set user jenkins to the image

RUN useradd -m -d /home/jenkins -s /bin/sh jenkins &&\

echo "jenkins:jenkins" | chpasswd

 

# Standard SSH port

EXPOSE 22

 

# Default command

CMD ["/usr/sbin/sshd", "-D"]

分享镜像

创建好了镜像,要懂得分享镜像,现在国家都提倡共享经济,咱也要紧跟共产党的指示来分享我们的镜像。

按照安装docker的步骤中的,找到启动选项配置文件,增加--insecure-registry <REGISTRY_HOSTNAME>:5000 参数,修改docker启动选项为:
OPTIONS='--selinux-enabled --log-driver=journald -H=unix:///var/run/docker.sock -H=0.0.0.0:6732 --insecure-registry <REGISTRY_HOSTNAME>:5000'

修改完成之后,重启docker。

启动docker registry服务:
docker run -p 5000:5000 -v <HOST_DIR>:/tmp/registry-dev registry

启动完registry服务之后,我们需要上传镜像:

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tempest latest 5f81c45f13d9 45 hours ago 870.6 MB
jenkins latest 753c2e1bdef7 2 weeks ago 715.4 MB


上传tempest镜像的方法:
docker tag 5f81c45f13d9 <REGISTRY_HOSTNAME>:5000/tempest:latest
docker push <REGISTRY_HOSTNAME>:5000/tempest:latest

 

总结

我们只是用了jenkins最简单的部分功能,但是依然显示了它的强大。程序员都很懒,所以我们需要自动化测试工具。能够自动化的,绝不人工操作。科技的进步,都是懒人造出来的,我怎么觉得这句话还是有一点对呢?你说呢?

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XR风云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值