接口自动化CI-Jenkins
在公司做自动化项目,CI都是用的现成的,还是想自己搞一个流程出来试试
CI需要的环境:Linux、Jenkins、maven、jdk、python3、allure
其实之前已经总结过一些文章,比如:
Linux中安装jdk:https://www.cnblogs.com/Pycainiao/p/13170053.html
Linux中安装maven:https://www.cnblogs.com/Pycainiao/p/13170101.html
Linux中安装Jenkins:https://www.cnblogs.com/Pycainiao/p/13170233.html
Jenkins中集成allure报告:https://www.cnblogs.com/Pycainiao/p/13173820.html
Jenkins中配置邮件发送allure报告:https://www.cnblogs.com/Pycainiao/p/13246162.html
上面的都已经经过验证了,所以是可以直接用的
下面思考下:
python项目我们用什么管理?我这里选用码云平台管理
python项目中我们使用什么工具管理依赖包?这里我选用的是pipenv
python项目我们需要运行在哪里?因为我的Jenkins是搭建在Linux中的,所以我的项目也是需要在Linux中跑起来
综合以上问题,我们需要解决的是
1、码云平台管理这个应该很简单,去码云上注册个账号,直接将代码放在码云上即可,和github一致的
2、既然项目在Linux中运行的话,那么我们就要在Linux中安装下python3了
- Linux中自带的python2 不要去动,也不要去卸载,之前试过,卸载会发生不可控的问题
- 在下面三个文件中,将顶部的
! /usr/bin/python
改成! /usr/bin/python2.7
/usr/libexec/urlgrabber-ext-down
/usr/bin/yum-config-manager
/usr/bin/yum - 官网下载python3 的版本,这里注意下,看你的项目中使用的python版本,对应下载那个版本,因为在pipenv生成的依赖文件会记录你的python版本
- 下载完成之后直接上传到Linux中,然后再下载对应python版本的依赖包,比如,python3.8,就需要执行
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
- 在Linux中解压python的压缩包,并进入到解压后的目录中,执行
make clean
./configure prefix=usr/local/python3
make -j4 && make install
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
rm /usr/bin/python
sudo ln -s /usr/local/python3 /usr/bin/python
3、我们使用的是pipenv,那么我们就还需要在Linux中下载pipenv这个模块
pip3 install pipenv
上面是基本配置,已经完成
下面就是我们到了配置Jenkins中的地步了
这里其实就是我在文章最开始的那几个文章中总结的,可以直接照着搞,下面总结下遇到的坑
1、在配置源码管理的时候填写码云地址报错:
解决方案:
- 下载Gitee Plugin 插件并重启Jenkins
- 进入Jenkins中的系统设置中配置下方图片参数
其中:链接名可以随便填写,Gitee 域名则需要填写https://gitee.com,证书令牌添加选择点击Jenkins,然后按照下图配置
- 然后回到配置源码管理页面中进行配置即可,然后添加自己的码云账号
2、在shell脚本编写的时候最初是这样编写的:
pwd chmod 777 Pipfile chmod 777 Pipfile.lock chmod 777 run.py pipenv install # 安装对应的依赖包 python3 run.py # 运行项目启动文件
这里就会报错:
经过排查发现是没有进入到虚拟环境中,因为所有的依赖包都是安装在虚拟环境中,所以,我更改了下shell脚本
chmod 777 Pipfile chmod 777 Pipfile.lock chmod 777 run.py pipenv run --three COMMAND pipenv install --dev pipenv shell
python3 run.py
然后构建后发现出现了新的错误:termios.error: (25, 'Inappropriate ioctl for device')
排查发现在Jenkins中并不能直接使用pipenv install命令
最后的解决方案:
pwd chmod 777 Pipfile chmod 777 Pipfile.lock chmod 777 run.py cd ./log chmod -R 777 ../log/ # 对整个log文件进行授权,因为要对日志进行写操作 cd .. pipenv --rm # 删除当前的虚拟环境 pipenv shell --fancy # 为现在的这个项目创建一个虚拟环境 pipenv install --dev # pipenv run python run.py request_project-FBmapVn8 指定虚拟环境运行文件,这里有一点不好,因为需要虚拟环境的名字,还好针对同一个项目生成的虚拟环境名是一样的
最后:只有自己真正的去做一件事,才会发现有多少坑在等着你,希望看见这篇文章的你好运~