简介:此框架设计的思路是基于docker搭建jenkins+gitlab环境,集成python+pytest+gitlab+jenkins+allure实现自动化持续集成测试,最终达到pycharm一键提交代码,触发整个测试流程,测试人员只需要接收分析测试报告的目标。

一.整体设计思路

docker chrome 自动化测试_docker

1.安装docker

2.使用jenkins镜像创建容器,并搭建python+pytest+allure的自动化测试环境     

3.  在 Jenkins 容器上的搭建持续集成环境和完成自动化测试

4.搭建 Gitlab 容器并上传本地项目代码

5.结合 Jenkins + Gitlab 完成自动化测试的持续集成实战


安装docker

首先我们需要卸载旧版本 Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

如果出现下图就可以了

docker chrome 自动化测试_docker_02

注意

  •  /var/lib/docker/ 下的内容(包括 images,containers,volumes,networks)被保留
  • Docker Engine 软件包现在称为 docker-ce 

 安装docker

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Step 2: 添加软件源信息,国内 Repository 更加稳定
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 更新
sudo yum makecache fast

安装最新版本的 Docker Engine 和 Container

sudo yum install docker-ce docker-ce-cli containerd.io

安装指定版本的 Docker Engine

查找 docker-ce 的版本列表

sudo yum list docker-ce --showduplicates | sort -r

docker chrome 自动化测试_docker chrome 自动化测试_03

 安装最新版本

sudo yum -y install docker-ce

 启动 Docker

sudo systemctl start docker

验证 Docker Engine 是否已正确安装

通过运行 hello-world 映像来验证

sudo docker run hello-world

docker chrome 自动化测试_jenkins_04

验证hello-world是否安装成功

docker images

 

docker chrome 自动化测试_jenkins_05

 配置docker镜像加速

# 1.创建一个目录
sudo mkdir -p /etc/docker

# 2.编写配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://reg-mirror.qiniu.com"
  ]
}
EOF

# 3.重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

下载jenkins镜像

搜索 jenkins 镜像

docker search jenkins

docker chrome 自动化测试_gitlab_06

 下载 jenkins 镜像

docker pull jenkins/jenkins

查看本地镜像

docker images

docker chrome 自动化测试_git_07

创建 Jenkins 容器 

在主机下创建一个目录

用于挂载目录

mkdir -p /var/jenkins_node

给挂载目录一个最高权限

可读可写可执行

chmod -R 777 /var/jenkins_node

创建与启动 jenkins 容器

  • -d:守护模式
  • -uroot:使用 root 身份进入容器,推荐加上,避免容器内执行某些命令时报权限错误
  • -p:主机 80 端口映射容器的 8080 端口,后面访问 jenkins 直接访问主机 ip 就行了,不需要加 8080 端口
  • -v:目录映射
  • --name:自定义一个容器名称
  • 使用上面推荐的 jenkins/jenkins 镜像
docker run -d -uroot -p 80:8080 --name jenkins1 -v /var/jenkins_node:/var/jenkins_home jenkins/jenkins

 查看容器是否运行

docker ps

docker chrome 自动化测试_docker chrome 自动化测试_08

 进入 jenkins 容器 CLI 界面

docker exec -it -uroot jenkins1 bash

这里也可以指定 root 身份进入容器

前置准备

# 获取最新的软件包
apt-get update
apt-get install vim
apt-get install wget

# 升级已安装的软件包
apt-get upgrade

# 提前安装,以便接下来的配置操作
apt-get -y install gcc automake autoconf libtool make
apt-get -y install make*
apt-get -y install zlib*
apt-get -y install openssl libssl-dev
apt-get install sudo

安装 Python 环境

下载 python

cd /usr/local/src
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar -zxvf Python-3.6.8.tgz
mv Python-3.6.8 py3.6
cd py3.6
pwd

docker chrome 自动化测试_gitlab_09

make 编译安装

在 /usr/local/src/py3.6 安装目录下执行下面的命令 

./configure --prefix=/usr/local/src/py3.6
make && make install

添加软链接

添加 python3 软链接

ln -s /usr/local/src/py3.6/bin/python3.6 /usr/bin/python3

添加pip3软链接

ln -s /usr/local/src/py3.6/bin/pip3 /usr/bin/pip3

验证 python3 环境

敲 python3 和 pip3 有下图的结果就是正常了

docker chrome 自动化测试_git_10

安装 Allure 环境

将压缩包传送到容器内

  1. 先将包上传到主机
  2. 然后从主机复制到容器内
docker cp allure-2.19.0.zip jenkins:/usr/local/src

 进入容器解压包

unzip allure-2.19.0.zip

 赋予文件夹所有内容最高权限

mv allure-2.13.6 allure
chmod -R 777 allure

 配置 allure 和 py 环境变量

cat >> /root/.bashrc << "EOF" 
export PATH=/usr/local/src/allure/bin:$PATH 
export PATH=/usr/local/src/py3.6/bin:$PATH 
EOF

更新环境变量配置文件

source /root/.bashrc

验证环境变量

allure --version
python3 --version

配置 JDK 环境变量

cat >> /root/.bashrc<< "EOF" 
export PATH=$JAVA_HOME/bin:$PATH 
EOF

更新环境变量配置文件

source /root/.bashrc

查看当前的系统已配置的环境变量

export

docker chrome 自动化测试_docker chrome 自动化测试_11


 浏览器访问 Jenkins

ip+8080

docker chrome 自动化测试_git_12

 查看管理员密码

cat /var/jenkins_home/secrets/initialAdminPassword

安装推荐的插件

docker chrome 自动化测试_docker_13

 创建管理员账户

docker chrome 自动化测试_git_14

Jenkins 全局工具设置 

docker chrome 自动化测试_git_15

配置 JDK 

docker chrome 自动化测试_gitlab_16

配置 Git 

docker chrome 自动化测试_jenkins_17

配置 allure 

docker chrome 自动化测试_jenkins_18

Jenkins 创建任务工程 

docker chrome 自动化测试_jenkins_19

docker chrome 自动化测试_gitlab_20


docker chrome 自动化测试_gitlab_21

搭建 Gitlab 容器 

搜索 gitlab 镜像

docker search gitlab

docker chrome 自动化测试_gitlab_22

创建 gitlab 容器

前置操作

由于是 docker 镜像运行, 所以我们需要把 gitlab 容器的配置、数据、日志存到容器外面,即将其目录映射到主机上

先准备三个目录:

#切到srv目录 
cd /srv 

#创建gitlab文件夹
mkdir gitlab 

cd gitlab 
mkdir config logs data

创建容器

docker run -d -p 443:443 -p 9001:80 -p 8022:22 \
--name gitlab \
--restart always \
--privileged=true \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime:ro \
gitlab/gitlab-ce

访问 gitlab 网站

ip+9001

首次登陆需要账号密码

cat /etc/gitlab/initial_root_password

创建一个项目

修改地址

docker chrome 自动化测试_gitlab_23

 进入容器

docker exec -it gitlab bash
vim /etc/gitlab/gitlab.rb

将这个 external_url 改成主机的 IP,不需要加端口哦

重启 gitlab 容器

docker restart gitlab

在windows上安装git环境

打开git-bash

docker chrome 自动化测试_docker chrome 自动化测试_24

 输入以下命令,即可将你的用户信息绑定到本地

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

生成SSH公钥

首先输入命令查看电脑是否已有公钥

cd ~/.ssh

若无法进入文件夹,代表没有公钥,输入命令生成公钥;这里可以一直敲Enter,不需要加密码了

ssh-keygen -t rsa -C "你的邮箱"

查看公钥

docker chrome 自动化测试_docker_25

 添加本地公钥到 Gitlab 中

docker chrome 自动化测试_git_26

 本地项目关联 Gitlab 项目并上传代码

cd 项目目录
git init
git remote add origin http://主机IP:9001..
git add .
git commit -m "Initial commit"
git push -u origin master

重点

  • 因为是在 docker 上部署的 Gitlab,且容器 80 端口映射到主机的 9001 端口
  • 所以执行 git remote 命令关联项目时,需要用 http 形式,且需要指定 9001 端口,否则会不成功

注意事项

执行 git push 的时候可能会出现下面的弹窗,此时输入 root 用户名和一开始登录的密码就行了

docker chrome 自动化测试_git_27


Jenkins 关联 Gitlab

进入 Jenkins 任务的配置页面

docker chrome 自动化测试_docker_28

docker chrome 自动化测试_jenkins_29

docker chrome 自动化测试_docker chrome 自动化测试_30

 

docker chrome 自动化测试_docker chrome 自动化测试_31

源码管理和构建触发器都配置好就能保存了

Gitlab 仓库配置 Webhooks

进入 Gitlab 仓库对应的项目

docker chrome 自动化测试_docker chrome 自动化测试_32

docker chrome 自动化测试_docker_33

 

docker chrome 自动化测试_git_34

 点击push event,可以看jenkins

docker chrome 自动化测试_docker chrome 自动化测试_35

 我们也可以看allure报告

docker chrome 自动化测试_docker chrome 自动化测试_36