Jenkins构建python项目

目录

一、安装docker

二、安装Jenkins

1、下载Jenkins镜像

2、运行Jenkins容器

三、配置Jenkins

1、进入Jenkins

2、初始化Jenkins

3、配置python环境

四、构建python项目

1、导出依赖包

2、导出项目文件

3、配置运行环境

4、配置构建任务

5、构建完成自动发送邮件

1、使用默认的邮件配置

2、使用第三方插件


一、安装docker

官方安装教程:

https://docs.docker.com/engine/install/fedora/

二、安装Jenkins

docker方式安装Jenkins(推荐)

1、下载Jenkins镜像

1、下载镜像

官方镜像用的这个,先拉取镜像,也可以不拉取镜像,直接运行,docker检测到本地没有这个镜像会自动下载,docker仓库地址:https://hub.docker.com/r/jenkins/jenkins

docker pull jenkins/je

nkins:lts-jdk17

2、切换镜像源

镜像下载失败或者太慢,需要切换镜像下载源

Linux:

修改 /etc/docker/daemon.json 文件

macos:

  1. 打开 Docker Desktop 应用。

  2. 进入 Preferences(配置)。

  3. 选择 Docker Engine。

  4. 在 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.docker.com/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

然后打开hudson.model.UpdateCenter.xml
这个配置文件; 将https://updates.jenkins.io/update-center.json
修改成http://mirror.xmission.com/jenkins/updates/update-center.json
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 > requirements.txt

2、使用使用的conda等包管理工具安装的python包,可以使用pipreqs导出

pip3 install pipreqs

pipreqs . --encoding=utf8 --force

这种方式好像还是会有问题,部分conda安装的包跟踪不到

推荐使用这种方式导出

3、pip list --format=freeze > requirements.txt

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 requirements.txt

2、下载完依赖包后,测试一下执行项目是否成功

python3 脚本名称

4、配置构建任务

在容器内可以成功执行项目,就可以进入Jenkins配置构建路径了

1、新建任务

Jenkins→create a job-->输入名称选择第一个,构建一个自由风格的软件项目-->构建步骤-->增加构建步骤-->执行shell-→输入需要执行的python项目命令

cd /var/jenkins_home/app&&source venv/bin/activate&&python app.py

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@qq.com

2、系统管理--邮件通知–SMTP服务器

smtp.exmail.qq.com

3、高级--使用SMTP认证–用户名

example@qq.com

4、密码-邮箱授权码

xxx

5、勾选使用SSL协议

6、SMTP端口,填写 465

7、勾选通过发送测试邮件测试配置

填写收件人地址,example@qq.com

点击 test configuration

配置任务

1、进入任务--配置–构建后操作

2、增加构建后步骤--E-mail Notification--收件人

example@qq.com

3、勾选不稳定的构建都发送邮件通知

4、手动构建失败一次,就能看到邮件通知

5、Jenkins自带的邮件模板路径不存在,需要手动修改下,这个地方我没找到在哪里可以设置

2、使用第三方插件

安装插件

1、系统管理-插件管理-安装Email Extension插件

配置插件

1、Jenkins Location--系统管理员邮件地址

系统管理员地址要设置成和发送邮件的地址一致,不然发送邮件会失败

2、系统管理"--“系统设置”。配置Extended E-mail Notification--“高级”

填写服务器地址、端口号

smtp.exmail.qq.com、465

3、Credentials添加凭据

发件人、授权码

example@qq.com

4、勾选使用SSL

5、保存

配置任务

1、进入任务--配置–构建后操作

2、增加构建后步骤--Editable Email Notification

附加构建日志,选择,Attach Build Log 

3、高级设置--触发器–选择任意失败

发给–选择收件人名单

4、点击保存

5、手动构建失败一次,就能看到邮件通知

常见问题

使用默认插件

1、com.sun.mail.smtp.SMTPSenderFailedException: 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、检查任务配置

相关推荐

  1. Jenkins构建python项目

    2024-07-11 02:02:02       20 阅读
  2. 7、jenkins项目构建细节-常用的构建触发器

    2024-07-11 02:02:02       39 阅读
  3. 6、jenkins项目构建类型1-项目类型介绍

    2024-07-11 02:02:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 02:02:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 02:02:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 02:02:02       58 阅读
  4. Python语言-面向对象

    2024-07-11 02:02:02       69 阅读

热门阅读

  1. 使用nodejs进行截图

    2024-07-11 02:02:02       19 阅读
  2. nginx部署vue项目

    2024-07-11 02:02:02       24 阅读
  3. 【网络】SCTP协议概念

    2024-07-11 02:02:02       27 阅读
  4. Git 完整的提交规范教程

    2024-07-11 02:02:02       21 阅读
  5. 【Zoom安全解析】深入Zoom的端到端加密机制

    2024-07-11 02:02:02       22 阅读
  6. Qt QSettings 使用详解:跨平台的配置管理

    2024-07-11 02:02:02       19 阅读
  7. Docker Dockerfile:构建与优化

    2024-07-11 02:02:02       23 阅读
  8. 面试题07-09

    2024-07-11 02:02:02       22 阅读
  9. docker里日志分割的方法

    2024-07-11 02:02:02       23 阅读
  10. C#面:解释startup class的configure方法有什么作用?

    2024-07-11 02:02:02       25 阅读
  11. 甲方安全员应该持有什么心态

    2024-07-11 02:02:02       25 阅读