docker+git+jenkins构建Python自动化项目

本文详细描述了如何在CentOS8环境中搭建一个包含Docker、Jenkins和Git的自动化测试环境,涉及软件安装、容器配置、数据持久化以及环境准备,包括Python和allure的安装,以及Jenkins的部署和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

梳理一下最近搭建的一个模拟自动化环境,使用服务器为2核+2GRAM,centos8,需要的软件有docker容器软件,git镜像软件,Jenkins镜像软件,allure软件压缩包。本文只对使用到的命令进行解释,其他命令自己扩展。

整体思路

将git仓库与Jenkins部署到docker容器中,然后将容器数据映射到宿主机中,保证数据安全,在容器崩掉后能快速恢复环境及数据。整体架构如下图所示:
在这里插入图片描述

docker的准备

环境检查

确保操作系统中没有docker,如果有自行判断是否需要重装,移除命令如下:

# yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine -y

安装docker-ce的依赖包

# yum install -y yum-utils device-mapper-persistent-data lvm2

安装成功截图

添加稳定的版本源

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

添加成功截图

安装docker-ce

安装过程会有两次提示,输入y继续,也可以在下面命令中加入-y参数

# yum install docker-ce

安装成功截图

启动docker

[root@panzer /]# systemctl start docker

启动成功截图

Git仓库容器准备

git仓库是作为一个容器运行在docker里面的,所以直接使用docker搜索镜像即可,这里使用的gogs,由gogs提供Git服务,使用web访问服务,方便快捷,相比纯命令行更友好。

搜索并下载镜像

[root@panzer secrets]# docker search gogs/gogs  # 搜索镜像
[root@panzer secrets]# docker pull gogs/gogs  # 拉取镜像
[root@panzer secrets]# docker images # 查看拉取到本地的镜像

搜索与拉取
拉取成功截图

启动镜像

准备挂载git仓库的宿主机目录

注意目录不固定,根据自己情况创建,后续使用该目录应同步变更。

[root@panzer home]# mkdir git_data  创建目录
[root@panzer home]# chmod 777 git_data/  赋予权限

创建成功截图

启动镜像

[root@panzer home]# docker run -d -uroot --name=git_server -p 10022:22 -p 10086:3000 -v /home/git_data:/data gogs/gogs
命令解释
run启动一个容器
-d后台运行
-uroot管理员身份运行
–name=git_server容器名称,自定义
-p 10022:22宿主机端口:容器端口,将容器的22端口映射到宿主机的10022端口
-p 10086:3000同上,10086端口就是web访问git服务的端口,可根据自己情况调整
-v /home/git_data:/data宿主机目录:容器目录,将容器内的data目录,映射到宿主机的/home/git_data,实现数据本地化,根据自己创建的目录调整
gogs/gogs需要启动的镜像名字/id
[root@panzer home]# docker ps -a 查看所有容器

启动成功截图

web访问安装git

通过页面访问URL:http://属主机IP:10086即可访问服务,并对安装git仓库。这里使用的轻量型的数据库,其他数据库也行,可能需要更高主机的配置。按照下图安装即可
安装git页面设置
注意这个运行系统用户:git,这个和ssh拉取推送代码有关,没有研究这个的密码,你们自己研究研究。

登录git

一开始是没有账号的,自己 根据自己需要注册好就行,注册完就登录,使用http的方式拉取和推送代码就是使用这个账号。
注册用户后登录
登录成功后创建一个仓库,仓库创建成功后会得到远程仓库的地址,如下图的http/ssh:
仓库创建成功

克隆仓库到本地

本地要先安装一个本地git仓库,百度搜索官网,下载,傻瓜式安装就可以了,然后找一个存放远程仓库的地方(我的是pycharm的项目目录里面),在存放远程仓库目录下面点击鼠标右键,选择git bash here(一定要装好本地git才会有这个命令行工具),将下图中的连接复制下来备用。
在这里插入图片描述

克隆仓库方式1-http

$ git clone http://服务器IP:端口/panzer/panzer_api_test.git

过程会有提示输入账号和密码,该账号密码为web页面注册的账号密码。

克隆仓库方式2-ssh

$ git clone git@服务器ip:panzer/panzer_api_test.git

我这里没有研究这个git怎么用,你们可以自己试试。

查看仓库是否下载成功

仓库下载成功,在本地目录中会有一个和仓库名一样的文件目录,且git命令行会提示下载了一个空仓库,这里没有截图,自己注意检查。现在开始检查远程仓库是否添加成功,进入仓库目录,右键git bash here。

$ git remote -v  # 查看配置的远程仓库

这里查询出来的地址应该和网页中提供的仓库地址是一致的。这样推送的远程仓库就配置好了,克隆远程仓库时,会将远程仓库的配置一并克隆下来,在本地目录内会有一个.git的隐藏目录,该目录内就是关于远程仓库的配置,所以克隆完成就自动配置好了远程仓库。如果没有.git目录,那么远程仓库应该是没有初始化成功,还不能使用。
远程仓库

本地代码管理

这里的本地代码就是指使用pycharm在本地直接编辑的代码,有了本地仓库后,可以在本地仓库内新建项目开始编辑代码。这里使用模拟代码,复制已有的代码目录放到本地git仓库中

代码跟踪

$ git add . # 跟踪仓库中所有的文件

在这里插入图片描述

查看代码文件跟踪情况

$ git status # 查看文件跟踪状态

如果跟踪成功文件会变为绿色,如果文件显示为红色则表示没有被跟踪。
在这里插入图片描述

提交代码到本地仓库

$ git commit -m '第一次提交' # 提交代码 ‘’中的为备注方便记录变更

在这里插入图片描述

推送代码到远程仓库

$ git push origin # 推送到远程仓库,就是origin这个名字的仓库

可以使用 git remote -v 查看远程仓库的名字,就是第一列的,默认是origin,可以使用git remote rename 来进行修改。推送有一个过程,会有进度提示,都100%了就推送完成了。
在这里插入图片描述

检查远程仓库中是否有代码

如果推送成功,远程仓库内应该会有相应的代码,备注,以及推送的id,如下图所示就表示基本成功了。
在这里插入图片描述
提示一个小坑:生产环境中维护代码不止一个人,每天早上上班编辑代码前先运行一下下面命令,保证本地代码库与远程代码库的一致再编辑提交。

$ git pull --rebase origin master  # origin为远程仓库名 更新 本地代码库,防止别人修改远程仓库代码,而自己本地没有修改

Jenkins容器部署

下载容器

回到服务器上,安装部署Jenkins容器。

[root@panzer /]# docker search jenkins # 查询Jenkins镜像

这里使用的是第二个
在这里插入图片描述

[root@panzer /]# docker pull jenkins/jenkins # 拉取镜像到服务器

在这里插入图片描述

[root@panzer /]# docker images # 查看本地镜像

如下图所示,表示容器镜像下载成功
在这里插入图片描述

启动容器

启动容器前先创建好挂载Jenkins数据的目录,在home目录下创建Jenkins_home,将docker中Jenkins容器内数据映射到该文件夹中,即使重建Jenkins容器数据也不会丢失

[root@panzer /]# mkdir -p /home/jenkins_home # 创建挂载目录
[root@panzer /]# chmod 777 /home/jenkins_home # 赋予权限

在这里插入图片描述

[root@panzer ~]# docker run -d -uroot -m 2g -p 8080:8080 -p 50000:50000 --restart=always -v /home/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins
命令解释
run启动一个容器
-d后台运行启动
-uroot管理员身份运行
-m 2g设置内存为2g(根据自己情况设置,也可以不设置)
-p 8080:8080宿主机端口:容器端口,端口映射,http访问宿主机8080端口就是访问容器的8080端口
-p 50000:50000同上,这个端口貌似是JNLP的通讯端口
–restart=always挂掉后自动重启
-v /home/jenkins_home:/var/jenkins_home宿主机目录:容器目录,将容器内jenkins_home 目录内容映射到宿主机jenkins_home目录中,容器内的jenkins_home 目录内的workspace内就是Jenkins创建工程后保存数据的地方,也就是所谓的Jenkins工作目录
-v /var/run/docker.sock:/var/run/docker.sock保证容器内能使用docker命令,注:配置了没有生效
-v /usr/bin/docker:/usr/bin/docker外部docker启动目录
-v /etc/localtime:/etc/localtime同步宿主机时间,对于定时任务还是比较重要的
–name jenkins自定义容器名称
jenkins/jenkins需要启动的本地镜像名称
启动成功后如下图,使用docker ps -a 查看本地所有容器(包括未运行的容器),确认status状态为UP,表示容器正在运行。

在这里插入图片描述

Jenkins容器内环境准备

allure环境准备

下载好allure的tar包,上传到服务器,并复制到容器内
在容器内根目录下创建一个app目录用来存放所需要用的的环境包。

[root@panzer ~]# docker cp ./allure-commandline-2.13.2.tgz jenkins:/app/  # 复制allure压缩包到容器内
[root@panzer ~]# docker exec -it jenkins bash  # 进入容器

复制到容器内,进入容器并解压后如下图所示,可以把解压后的文件重命名为allure。注意后面的配置基本都是在容器内进行操作的,必须要进入到容器,不是在宿主机。注意看命令行头头的变化。
在这里插入图片描述

root@48934ea3315e:/app# chmod -R 777 allure # 赋予权限 此处已将解压后的allure文件夹更名为allure

在这里插入图片描述

root@48934ea3315e:/app/allure# ln -s /app/allure/bin/allure /usr/bin/allure  # 添加连接到bin

在/usr/bin/allure目录下执行 ls -il可以查看连接目录,必须在该目录下才能看到,添加软连接时源目录必须是真是存在的,我这里的源目录是我自己创建的,各位根据自己的实际情况进行调整。
在这里插入图片描述

root@48934ea3315e:/etc# vim profile 编辑
在文件中添加:export PATH=$PATH:/app/allure/bin 在文件最后添加allure安装路径,根据自己情况调整目录
root@48934ea3315e:/etc# sourcce profile 文件生效

在这里插入图片描述
输入allure命令出现下图提示,表示allure环境配合成功啦!!
在这里插入图片描述

Python环境准备

首先进入容器查看操作系统:

[root@panzer ~]# docker exec -it jenkins bash  # 进入容器
root@48934ea3315e:/# cat /etc/issue # 查看操作系统

这里查询到的是Debian,该操作系统没有yum,需要使用apt-get代替下载。
在这里插入图片描述
根据下面的操作进行

root@48934ea3315e:/app/python# apt-get update # 更新apt,必须更新,不然什么都下不了
root@48934ea3315e:/app/python# apt-get -y install gcc automake autoconf libtool make  # 安装make
root@48934ea3315e:/app/python# apt-get -y install make*  注意会有报错,有包冲突,继续往下装
root@48934ea3315e:/app/python# apt-get -y install zlib*
root@48934ea3315e:/app/python# apt-get -y install openssl libssl-dev
root@48934ea3315e:/app/python# apt-get install sudo

以上命令都是解决安装Python所需要的依赖的。

root@48934ea3315e:/app/python# apt-get install -y wget 安装weget,方便下载
root@48934ea3315e:/app/python# wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz 下载Python包
root@48934ea3315e:/app/python# tar -zxvf Python-3.7.6.tgz   解压Python包

在这里插入图片描述
下面就是进行安装,主要步骤就是,编译-安装-建立软件连接,就算完成了。首先使用make进行编译进入到Python的解压目录下,查看是否存在configure文件,如果有就在该目录下执行编译。我的目录如下所示:
在这里插入图片描述
在这里插入图片描述

root@48934ea3315e:/app/python/Python-3.7.6# ./configure --prefix=/app/python --with-ssl
命令解释
./configure检查系统配置,生成Makefile文件,以便可以使用make和make install 进行编译、安装
–prefix=/app/python指定安装目录,这里是容器内的/app/python,根据自己情况调整
–with-ssl安装本文件所需要的库文件
使用make进行安装:
root@48934ea3315e:/app/python/Python-3.7.6# make  #该步骤时间较长,中间还会停顿,耐心等待安装完成
root@48934ea3315e:/app/python/Python-3.7.6# make install # 执行安装

出现下图内容表示安装成功:
在这里插入图片描述
为Python和pip添加软连接

root@48934ea3315e:/usr/bin# ln -sf /app/python/bin/python3.7 /usr/bin/python3  在环境中添加Python连接
root@48934ea3315e:/usr/bin# ln -sf /app/python/bin/pip3 /usr/bin/pip3  在环境中添加pip连接
root@48934ea3315e:/app# pip3 install --upgrade pip 升级PIP

连接建立成功后可以使用Python命令和pip命令验证是否安装配置成功。不成功检查/usr/bin目录下的连接是否正确,尤其是路径,到bin目录下使用 ls -il 检查。
在这里插入图片描述
安装自动化需要的库:这里我是将需要的库编辑在一个txt文本内,可以在本地使用DOS命令 pip free > /目录/文件.txt进行打包,上传到服务器,复制到容器内再进行pip安装。

root@48934ea3315e:/app# pip3 install -r ./pip_pakge.txt 

在这里插入图片描述
我的服务器是在国外的所以就没有更新pip源,如果需要国内的pip源,自行搜索更新替换。容器环境中很多工具都没有比如vim,需要自己安装下载,都是是apt-get命令进行安装,想要什么自行安装。

封装自己Jenkins镜像

当上诉环境配置好后,基本没什么大问题了,可以封装一个本地镜像备份,以备不时之需,利用备份镜像可快速恢复上诉的环境(安装有allure,Python,vim等各种工具的环境),利用宿主机挂载的目录数据,可以对数据惊醒快速恢复,封装命令如下:

[root@panzer ~]# docker ps # 查看正在运行的容器,可以查看容器ID
[root@panzer ~]# docker commit 48934ea3315e jenkins_python_allure # 将配置好环境的镜像重新封装备份在本地
[root@panzer ~]# docker images # 查看本地的镜像

过程如下图所示:
在这里插入图片描述
容器环境准备好后就可以在web页面访问Jenkins服务。
注意:以上所有环境对应的端口需要不被占用,防火墙开放,不然web页是无法访问的!!!

访问Jenkins

访问URL:http://宿主机IP:映射的端口
在这里插入图片描述
第一次访问需要到服务器上查看密码,有以下两种方法
1.直接进入容器查看:

root@panzer home]# docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword # 注意修改容器的名字,也就是命令中的Jenkins

在这里插入图片描述
2.通过容器日志进行查看:

[root@panzer home]# docker logs jenkins # 注意修改蓉欧过去名字

在这里插入图片描述
这里配置一下Jenkins的镜像加速,修改为国内的,国外的始终有点问题:
由于做了数据映射,所以只需要修改宿主机/home/jenkins_home/中的hudson.model.UpdateCenter.xml 文件就可以实现。
在这里插入图片描述
将 url 内容修改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json (清华大学官方镜像)
效果图下图所示:
在这里插入图片描述
配置完成后在wbe访问首页输入密码,进入、安装插件,再进行系统设置就可以构建项目了。

全局工具配置

在Jenkins的web完成。
配置路径:
在这里插入图片描述
配置内容在这里插入图片描述
配置位置:
在这里插入图片描述
配置内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置位置:
在这里插入图片描述
配置内容:
在这里插入图片描述
容器内查看JDK方法:

# 容器内执行:echo $JAVA_HOME

在这里插入图片描述

构建工程

接下来就是创建一个项目,并构建了,这个就不细说了,网上帖子很多,自己去了解

git仓库的配置

这里由于没有git用户的密码,所以是用的http的方式连接仓库,不管什么方法,先能拉得过来才是王道。这里注意第一次添加账号密码后可能会出现权限问题,返回一个错误码code:128,我是将添加的账号密码删除后重新添加后就正常了。
在这里插入图片描述

构建步骤

构建步骤就用的简单的shell命令,首先你要了解的项目目录结构,以及Jenkins工作目录结构,如下图,服务器中目录所示:
在这里插入图片描述
在这里插入图片描述
运行构建的时候工作在创建项目目录下面,使用shell命令切换到需要运行的run.py文件目录中,再使用Python命令运行该run.py文件。
在这里插入图片描述

生成报告

看图中解释,和上面的目录结构吧,不多说了。
在这里插入图片描述
在这里插入图片描述

构建结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完结撒花,尼玛这玩意儿写了我一天,要Jenkins发邮件的配置,看我另外一篇帖子,那个是直接部署在宿主机中的Jenkins,但是发邮件的配置都是一样的

搭建项目自动化框架需要进行多个步骤,以下是从0到1使用 Docker + Jenkins + Git + Pytest + Allure 搭建项目自动化框架的步骤: 1. 安装 Docker 首先需要在本地安装 DockerDocker 是一个开源的应用容器引擎,可以方便地创建、部署和运行应用程序。Docker 官网提供了详细的安装说明,根据官方文档进行安装即可。 2. 创建 Docker 镜像 创建 Docker 镜像可以使用 Dockerfile 进行构建Dockerfile 是一个文本文件,包含了一系列命令来构建一个 Docker 镜像。在 Dockerfile 中指定需要安装的软件和依赖项,然后执行构建命令即可创建 Docker 镜像。 3. 创建 Jenkins 服务器 在 Docker 中运行 Jenkins 需要创建一个 Jenkins 服务器的容器。可以通过 Docker Hub 上的 Jenkins 官方镜像创建 Jenkins 服务器,也可以使用自定义的 Docker 镜像创建。创建 Jenkins 服务器的容器需要指定一些必要的参数,例如管理员密码、Jenkins 路径等。 4. 集成 Git 使用 Git 进行版本控制是开发中常用的方式之一,因此需要将 Git 集成到项目自动化框架中。可以在 Jenkins 中配置 Git 插件,然后在 Jenkins 中创建一个 Git 仓库进行项目管理。 5. 集成 Pytest Pytest 是 Python 测试框架中的一种,可以用于编写和运行单元测试、集成测试和端到端测试。可以在 Jenkins 中安装 Pytest 插件,然后在 Jenkins 中添加 Pytest 测试任务。 6. 集成 Allure Allure 是一种测试报告框架,可以生成漂亮的测试报告。可以在 Pytest 中使用 Allure 插件生成测试报告,然后将测试报告显示在 Jenkins 中。 7. 构建项目自动化框架 完成以上步骤后,就可以构建项目自动化框架了。在 Jenkins 中创建一个构建任务,使用 Git 仓库进行版本控制,并使用 Pytest 进行测试,最后生成 Allure 测试报告。 总之,以上就是从0到1使用 Docker + Jenkins + Git + Pytest + Allure 搭建项目自动化框架的步骤。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值