目录
一、安装docker
二、安装Jenkins
1、下载Jenkins镜像
2、运行Jenkins容器
三、配置Jenkins
1、进入Jenkins
2、初始化Jenkins
3、配置python环境
四、构建python项目
1、导出依赖包
2、导出项目文件
3、配置运行环境
4、配置构建任务
5、构建完成自动发送邮件
1、使用默认的邮件配置
2、使用第三方插件
一、安装docker
官方安装教程:
/engine/install/fedora/
二、安装Jenkins
docker方式安装Jenkins(推荐)
1、下载Jenkins镜像
1、下载镜像
官方镜像用的这个,先拉取镜像,也可以不拉取镜像,直接运行,docker检测到本地没有这个镜像会自动下载,docker仓库地址:/r/jenkins/jenkins
docker pull jenkins/je
nkins:lts-jdk17
2、切换镜像源
镜像下载失败或者太慢,需要切换镜像下载源
Linux:
修改 /etc/docker/ 文件
macos:
-
打开 Docker Desktop 应用。
-
进入 Preferences(配置)。
-
选择 Docker Engine。
-
在 JSON 配置中添加或修改
registry-mirrors
部分,同样以官方中国镜像为例:
2、运行Jenkins容器
1、运行Jenkins对应的docker容器
docker run --name jenkins -u root -p 8080:8080 -p 50000:50000 -v /data/docker_jenkins:/var/jenkins_home jenkins/jenkins:lts-jdk17
docker命令官方教程:https://docs./engine/reference/run/
命令解析:
docker run 运行容器
-name 指定容器名称
-u root 指定使用root用户运行,镜像默认使用Jenkins用户运行,后续需要安装python环境,需要指定root
-p 公开端口号,如果不公开,外部不能访问容器内端口, - p 宿主机端口:容器内端口
-v 挂载数据卷, -v 宿主机路径:容器内路径
启动后,当前窗口不要关闭,里面包含初始化密码
三、配置Jenkins
1、进入Jenkins
1、进入到Jenkins页面,默认是8080端口
http://127.0.0.1:8080/
2、如果页面一直显示
Please wait while Jenkins is getting ready to work …
Your browser will reload automatically when Jenkins is ready.
出现这个情况时,是因为Jenkins的默认更新镜像用的国外的镜像,把更新镜像改成国内的即可。 首先进入Jenkins的安装目录
cd /data/docker_jenkins
然后打开
这个配置文件; 将/
修改成/jenkins/updates/
3、重启Jenkins服务,再重新刷新Jenkins启动页面即可。
docker restart jenkins
2、初始化Jenkins
1、输入初始化密码
首先进入Jenkins需要输入密码
把刚才docker日志中的密码复制进来
2、下载插件
选择第一个推荐的插件
3、设置管理员密码
下载完需要输入管理员密码
3、配置python环境
Jenkins容器默认的系统是Debian,
1、更新最新的安装包
apt update
apt upgrade
2、下载python环境依赖包
apt-get -y install zlib1g-dev
apt-get -y install libbz2-dev
apt-get -y install liblzma-dev
apt-get -y install uuid-dev
apt-get -y install libssl-dev
apt-get -y install libreadline-dev
apt-get -y install libncursesw5-dev
apt-get -y install libsqlite3-dev
apt-get -y install libffi-dev
apt-get -y install libgdbm-dev
apt-get -y install tk-dev
3、下载python3环境
apt install -y python3 python3-pip python3-venv
4、验证python版本
python3 --version
四、构建python项目
1、导出依赖包
1、在项目下生成依赖文件
如果是使用纯虚拟环境或者pip安装的包,可以直接使用pip3导出
pip3 freeze >
2、使用使用的conda等包管理工具安装的python包,可以使用pipreqs导出
pip3 install pipreqs
pipreqs . --encoding=utf8 --force
这种方式好像还是会有问题,部分conda安装的包跟踪不到
推荐使用这种方式导出
3、pip list --format=freeze >
2、导出项目文件
1、把项目相关文件跟依赖文件复制到Jenkins挂载目录下,创建一个app文件夹,把项目放到app文件夹下
mkdir -p /data/docker_jenkins/data
cp app/* /data/docker_jenkins/data
3、配置运行环境
1、先安装python的依赖文件
Debian系统默认使用pip3直接安装到全局环境,会报错
我们先创建一个python的虚拟环境,然后在虚拟环境中安装依赖包
cd /data/docker_jenkins/data
python -m venv vnev
source venv/bin/activate
pip3 install -r
2、下载完依赖包后,测试一下执行项目是否成功
python3 脚本名称
4、配置构建任务
在容器内可以成功执行项目,就可以进入Jenkins配置构建路径了
1、新建任务
Jenkins→create a job-->输入名称选择第一个,构建一个*风格的软件项目-->构建步骤-->增加构建步骤-->执行shell-→输入需要执行的python项目命令
cd /var/jenkins_home/app&&source venv/bin/activate&&python
2、修改默认shell
Jenkins默认执行的shell是/bin/sh,需要切换到/bin/bash,否则使用source命令激活虚拟环境时,会报错source命令没找到
在Jenkins-->系统管理-->Shell→输入 /bin/bash-->保存
3、手动构建
选择任务,点击立即构建
4、定时构建
选择任务-->Configure-->Build Steps-->定时构建→保存
这里用到的是cron表达式
cron表达式教程/在线验证:Cron - 在线Cron表达式生成器
5、构建完成自动发送邮件
以企业微信邮箱为例
1、使用默认的邮件配置
配置邮箱
1、Jenkins Location--系统管理员邮件地址
系统管理员地址要设置成和发送邮件的地址一致,不然发送邮件会失败
example@
2、系统管理--邮件通知–SMTP服务器
3、高级--使用SMTP认证–用户名
example@
4、密码-邮箱授权码
xxx
5、勾选使用SSL协议
6、SMTP端口,填写 465
7、勾选通过发送测试邮件测试配置
填写收件人地址,example@
点击 test configuration
配置任务
1、进入任务--配置–构建后操作
2、增加构建后步骤--E-mail Notification--收件人
example@
3、勾选不稳定的构建都发送邮件通知
4、手动构建失败一次,就能看到邮件通知
5、Jenkins自带的邮件模板路径不存在,需要手动修改下,这个地方我没找到在哪里可以设置
2、使用第三方插件
安装插件
1、系统管理-插件管理-安装Email Extension插件
配置插件
1、Jenkins Location--系统管理员邮件地址
系统管理员地址要设置成和发送邮件的地址一致,不然发送邮件会失败
2、系统管理"--“系统设置”。配置Extended E-mail Notification--“高级”
填写服务器地址、端口号
、465
3、Credentials添加凭据
发件人、授权码
example@
4、勾选使用SSL
5、保存
配置任务
1、进入任务--配置–构建后操作
2、增加构建后步骤--Editable Email Notification
附加构建日志,选择,Attach Build Log
3、高级设置--触发器–选择任意失败
发给–选择收件人名单
4、点击保存
5、手动构建失败一次,就能看到邮件通知
常见问题
使用默认插件
1、: 501 mail from address must be same as authorization user
原因:发送邮件的地址与管理员邮箱不一致
解决方案:修改管理员邮箱地址,默认管理员地址是空
2、ERROR: Couldn't connect to host, port: localhost, 25; timeout 60000
原因:发送邮件配置有误,端口连接超时了
解决方案:检查邮件配置相关内容,配置完后点击,test configuration,确认收到测试邮件
使用第三方插件,Email Extension
1、构建失败后,没有收到邮件,日志内容,An attempt to send an e-mail to empty list of recipients, ignored.
原因:收件人地址为空,触发器未选择收件人名单
解决方案:触发器检查触发条件正确,以及存在收件人名单
排查思路:
1、先确认邮件配置正确
2、检查收件人名单正确
3、检查触发条件
4、检查任务配置