aamt工具:基于docker搭建jenkins集成环境
一、查看linux 系统是否有docker
docker version
如果没有docker>> CentOS 7下安装Docker及基础操作
一、安装yum
# 1,下载最新的yum-3.2.28.tar.gz并解压
wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
tar xvf yum-3.2.28.tar.gz
# 2,进入目录,运行安装
cd yum-3.2.28
yum install yum
# 如果结果提示错误: CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/
# 可能是原来是缺少配置文件。在etc目录下面新建yum.conf文件,然后再次运行 yummain.py install yum,顺利完成安装。
# 3,最后更新系统。
yum check-update
yum update
yum clean all
# 二、安装docker
# 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker ,通过 uname -r 命令查看你当前的内核版本:
uname -r
# 2.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 3.设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4.安装docker
sudo yum install docker-ce
# 5.启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
# 6.验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
二、Docker 安装Jenkins
1、查看本地所有 镜像 (非root用户查看使用命令:sudo docker images)
docker images
2、docker下载Jenkins镜像
docker pull jenkins/jenkins:2.306-centos
# 删除不用的镜像(先查看,再删除)
# 查看所有的镜像
docker images
# 删除没用的镜像 节省空间
docker rmi 05d7defdb214
# 展示出所有的容器
docker pa -a
# 删除单个容器(docker rm -f -v 容器名)
docker rm -f -v jenkins2
3、新建jenkins的挂载目录
# 在主机下创建一个文件夹(-p 要加上) 用于挂载目录
mkdir -p /home/xuefeng/jenkins_node
# 给挂载目录一个最高权限 (可读可写可执行)
chmod -R 777 /home/xuefeng/jenkins_node
4 、创建与启动 jenkins 容器
docker run -d -uroot -p 10086:8080 --name jenkins1 -v /home/xuefeng/jenkins_node:/var/jenkins_home jenkins/jenkins:2.306-centos
-d: 守护模式
-uroot: 使用 root 身份进入容器,推荐加上,避免容器内执行某些命令时报权限错误
-p:10086:8080 jenkins的web访问端口10086(通过访问外部端口10086,实际映射到Jenkins容器的 8080端口)
-v:目录映射 /home/xuefeng/jenkins_node:/var/jenkins_home 容器/var/jenkins_home路径映射到宿主机/home/xuefeng/jenkins_node
--name:自定义一个容器名称 jenkins1
jenkins/jenkins:2.306-centos 使用这个镜像
5、查看Jenkins镜像是否启动成功
docker ps -a
6、开启docker交互模式终端-进入容器
docker exec -it -uroot jenkins1 bash
# 退出docker 容器
# ctrl + p + q
7、访问Jenkins
http://www.automate.cn:10086 如不能访问就是容器关闭了
8、首次登陆查看密码
.png)
解锁jenkins – 容器内 进入目录 /var/jenkins_home/secrets/initialAdminPassword 查看文件initialAdminPassword
cat /var/jenkins_home/secrets/initialAdminPassword
9、更改插件源地址,提升下载插件的速度
http://www.automate.cn:10086/pluginManager/advanced,进入插件源配置界面,滑到最后,设置插件源地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 设置好后点击保存,最后点击检查。
.png)
.png)
如果速度还是慢 ,点这里找答案
三、前置准备(重要)
1.获取最新的软件包
yum update
2.提前安装,以便接下来的配置操作
yum -y install gcc automake autoconf libtool make
yum -y install make*
yum -y install zlib*
yum install openssl-devel -y //
yum -y install sudo
四、容器内安装python3环境(在线安装)
1.进入jenkins_home目录
cd /var/jenkins_home/
2.创建python存放路径
mkdir python3
cd python3
3.下载python3 使用wget时发现没有该命令
# 安装 wget(yum 会自动下载wget 所需依赖包)
yum -y install wget
wget http://npm.taobao.org/mirrors/python/3.9.0/Python-3.9.0.tgz
# 默认下载到当前文件(这里是python3文件夹)
4.解压文件目录
tar -zxvf Python-3.9.0.tgz
5.查看解压后的文件
ls
五、make编译安装
在Python3.9.0目录下
第一步
cd Python-3.9.0
# 配置编译路径
./configure --prefix=/var/jenkins_home/python3 --with-ssl
遇到的问题:执行./configure时报错:
configure: error: no acceptable C compiler found in $PATH
查看得知未安装合适的编译器,可以使用下面的命令安装编译器,解决./configure时报错。
# 使用以下命令 会自动安装/升级gcc及其他依赖的包
sudo yum install gcc-c++
重新配置编译路径即可
./configure --prefix=/var/jenkins_home/python3 --with-ssl
第二步
# 编译
make && make install
六、添加软链
添加python3软链接
ln -s /var/jenkins_home/python3/bin/python3.9 /usr/bin/python3
添加pip3软链接
ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3
# 如果之前添加过,会提示文件存在 ln:failed to create symbolic link '/usr/bin/pip3': File exists,解决方案:覆盖文件,执行以下命令
ln -sf /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3
除了添加软连,还可以直接 把 python3 pip3 添加到环境变量
验证是否成功
pip3
python3

七、安装allure
1、将allure压缩包传送到容器内(分2步)
先将包上传到主机 /usr/local/src/ 目录下
然后从主机复制到容器 /var/jenkins_home/ 目录下
# 退出容器:
ctrl + p + q
# 复制文件到容器
docker cp /usr/local/src/allure-2.15.0.zip jenkins1:/var/jenkins_home/
# 重新进入容器
docker exec -it -uroot jenkins1 bash
# cd 到容器的指定目录
cd /var/jenkins_home/
# 解压
unzip allure-2.15.0.zip
# 重命名
mv allure-2.15.0 allure
# 赋予文件夹所有内容最高权限
chmod -R 777 allure
2、添加allure软链接
ln -s /var/jenkins_home/allure/bin/allure /usr/bin/allure
3、配置allure 和 py 环境变量
# 记得一行一个回车哦,不然就直接复制粘贴
cat >> /root/.bashrc << "EOF"
export PATH=/home/data/allure/bin:$PATH
export PATH=/var/jenkins_home/python3/bin:$PATH
EOF
拓展:查看所有的环境变量
export
4、更新环境变量配置文件
source /root/.bashrc
5、验证环境变量
allure --version
python3 --version
八、安装JDK(版本1.8以上)
查看当前是否有jdk的版本:
java -version
查看到该容器已经有了 1.8.0_292, 直接配置


如果没有JDK环境,安装以下方式安装
1、将JDK压缩包传送到容器内(分3步)
下载jdk:华为镜像:https://repo.huaweicloud.com/java/jdk/
将包上传到主机
/usr/local/src/目录下然后从主机复制到容器
/var/jenkins_home/目录下
# 退出容器:
ctrl + p + q
# 复制文件到容器
docker cp /usr/local/src/jdk-8u301-linux-x64.tar.gz jenkins1:/var/jenkins_home/
2、解压
# 重新进入容器
docker exec -it -uroot jenkins1 bash
# cd 到容器的指定目录
cd /var/jenkins_home/
# 解压
tar -zxvf jdk-8u301-linux-x64.tar.gz
# 查看文件
ls
3、重命名
mv jdk1.8.0_301 jdk
4、赋予文件夹所有内容最高权限
chmod -R 777 jdk
5、将JDK路径加入环境变量中
这里只展示一种方法,更多方法 看这里: Linux环境变量配置全攻略
vi /etc/profile
export JAVA_HOME=/var/jenkins_home/jdk/ # 这里换成你的JDK路径
export PATH=$JAVA_HOME/bin:$PATH

按 i 进入插入模式
末尾输入下面的代码
按
ESC退出插入模式输入
:wq保存退出
同理这里也可以把python3 、pip3、或者第三方pytest库 添加到环境变量 ,具体可以找时间看看。
6、让环境变量立即生效
source /etc/profile
7、验证是否成功 (注意是 -version 是一个横线)
java -version

九、安装项目需要的第三方库
1、通过 requirement.txt 批量安装
在 python 项目生成一个 requirement.txt (如果项目里有虚拟环境,生成的时候,需要注意。)
python系列文章: python安装、pip更新下载、批量生成安装第三方库
给当前项目分配一个单独的:python解析器,只生成当前项目依赖的第三方库
解决办法:把超时的单个包拎出来
pip3 —default-timeout=1000 install -U 包名
比如pip3 —default-timeout=1000 install -U Bebel==2.7.0
然后就慢慢等吧....搞定
将 requirement.txt 上传到主机
docker cp /usr/local/src/requirements.txt jenkins1:/var/jenkins_home/python3
重新进入容器
docker exec -it -uroot jenkins1 bash
官方仓库安装
# 方式一(缺点一旦有一个出错,pip3 list 一下,发现第三方库 全部没安装成功)
pip3 install -r requirements.txt
# 方式二(解决方式一出现的问题)
for i in `cat requirements.txt `;do pip3 install $i;done
安装速度太慢怎么办?
# 方式一(缺点一旦有一个出错,pip3 list 一下,发现第三方库 全部没安装成功)
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 方式二(解决上面出现的问题)
for i in `cat requirements.txt `;do pip3 install $i -i https://pypi.tuna.tsinghua.edu.cn/simple;done
更多国内镜像源:
http://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 华中理工大学
http://pypi.sdutlinux.org/simple/ 山东理工大学
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple 清华
2、如果批量安装出错

可以尝试单个安装
pip3 install jsonpath

单个安装还出错,就只能手工下载,传到容器内部 , 再安装
官网下载 https://pypi.org/project/


# 复制到容器里
docker cp /usr/local/src/jsonpath-0.82.tar.gz jenkins1:/var/jenkins_home/
# 重新进入容器
docker exec -it -uroot jenkins1 bash
cd /var/jenkins_home/
# 解压
tar -zxvf jsonpath-0.82.tar.gz
# 进入jsonpath-0.82
cd jsonpath-0.82
# 构建
python3 setup.py build
# 安装
python3 setup.py install
# 验证
pip3 list

10 查看效果
http://www.51automate.cn:10086/
Jenkins部署好之后,如何创建、配置项目仓库、构建规则、邮件通知等?
请查看 aamt 系列文章>> Jenkins创建、配置项目仓库、构建规则、邮件通知
扩展
成功构建 jenkins构建python自动化项目时,控制台提示:执行shell报错 pytest:command not found
https://blog.csdn.net/csdn_wuxinzy/article/details/119213802
明明已经安装过了

原因就是执行目录找不到pytest命令, 可使用pytest的安装目录,也可将安装目录添加软链接到 系统的环境变量目录。
不管是Linux 还是 windows 执行命令时,都是先从当前目录查找命令, 如果没有此命令, 就会去环境变量的目录去查找命令。
使用 以下命令 当前所有环境变量列表。 Linux export 命令 拓展>> 菜鸟教程
export

# 容器内先查找到pytest的路径
find / -name pytest
解决方案1, 将其添加到软连接(推荐)

解决方案2, 使用 pytest的绝对路径
/var/jenkins_home/python3/bin/pytest -v -s执行pytest命令