jenkins上需要兼容py2和py3版本来运行脚本的时候,Pyenv Pipeline或许可以帮到你
前期准备:必须在你的机器上已安装好python(不管哪个版本)
1. Jenkins上安装Pyenv Pipeline插件
(这个插件,可能会由于网络原因下载失败,可以手动下载后上传)
这个插件主要是为你的python脚本指定一个virtualenv环境运行(而不是创建virtualenv构建器)
2. 安装ShiningPanda插件
这个插件是可选的,主要提供virtualenv环境的创建,建议安装,后续还可声明python版本的安装路径
3. 配置python路径
Manage Jenkins > Global Tool Configuration
填写python2或者python3在jenkins机器上的路径,一般都为:/usr/bin/python3.6,也可以使用which python来找; 名称随便写即可,后续会用到
4. 新建pipline job
新建一个流水线job,脚本如下:
node{
stage("test"){
withPythonEnv('System-CPython-3.6'){ // 填写刚刚在设置python路径时的名称
sh "python3 ./{file}.py"
}
}
}
运行过之后,会在job对应的workspace下新建一个.pyenv-System-CPython-3.6的文件夹,这个就是Pyenv创建的Virtualenv环境,其实相当于帮用户手动的创建了一个python运行环境在workspace下
5. 激活Virtualenv环境
在jenkins上运行python脚本,引用的模块需要用户自行下载,可以用source进入该环境
source ${workspace path}/.pyenv-System-CPython-3.6/bin/activate
此时环境被激活,我们可以观察到命题行提示变了,有个(.pyenv-System-CPython-3.6)前缀,表示当前环境是一个名为.pyenv-System-CPython-3.6 的Python环境,这样我们可以下载任意需要安装的模块啦~
退出环境,使用deactivate命令
deactivate
6. jenkins运行python脚本时的坑
-
提示用户编码错误:
这个是因为没有加上jenkins的全局编码方式,只需要在Manage Jenkins > configuration 下Global properties
找不到python的自定义模块
- 首先看是否加了init文件
- 使用 from package.file import * 的方式引入模块