docker+gitlab+jenkins+pytest+allure实现devops接口自动化

简介:此框架设计的思路是基于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 环境

将压缩包传送到容器内

  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


 浏览器访问 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报告

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值