简介:此框架设计的思路是基于docker搭建jenkins+gitlab环境,集成python+pytest+gitlab+jenkins+allure实现自动化持续集成测试,最终达到pycharm一键提交代码,触发整个测试流程,测试人员只需要接收分析测试报告的目标。
一.整体设计思路
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
如果出现下图就可以了
注意
- /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
安装最新版本
sudo yum -y install docker-ce
启动 Docker
sudo systemctl start docker
验证 Docker Engine 是否已正确安装
通过运行 hello-world 映像来验证
sudo docker run hello-world
验证hello-world是否安装成功
docker images
配置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
下载 jenkins 镜像
docker pull jenkins/jenkins
查看本地镜像
docker images
创建 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
进入 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
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 有下图的结果就是正常了
安装 Allure 环境
将压缩包传送到容器内
- 先将包上传到主机
- 然后从主机复制到容器内
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
浏览器访问 Jenkins
ip+8080
查看管理员密码
cat /var/jenkins_home/secrets/initialAdminPassword
安装推荐的插件
创建管理员账户
Jenkins 全局工具设置
配置 JDK
配置 Git
配置 allure
Jenkins 创建任务工程
搭建 Gitlab 容器
搜索 gitlab 镜像
docker search gitlab
创建 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 exec -it gitlab bash
vim /etc/gitlab/gitlab.rb
将这个 external_url 改成主机的 IP,不需要加端口哦
重启 gitlab 容器
docker restart gitlab
在windows上安装git环境
打开git-bash
输入以下命令,即可将你的用户信息绑定到本地
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
生成SSH公钥
首先输入命令查看电脑是否已有公钥
cd ~/.ssh
若无法进入文件夹,代表没有公钥,输入命令生成公钥;这里可以一直敲Enter,不需要加密码了
ssh-keygen -t rsa -C "你的邮箱"
查看公钥
添加本地公钥到 Gitlab 中
本地项目关联 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 用户名和一开始登录的密码就行了
Jenkins 关联 Gitlab
进入 Jenkins 任务的配置页面
源码管理和构建触发器都配置好就能保存了
Gitlab 仓库配置 Webhooks
进入 Gitlab 仓库对应的项目
点击push event,可以看jenkins
我们也可以看allure报告