记录一次Jenkins踩坑经历"Invoke top-level Maven targets" 构建时找不到系统环境

797 阅读1分钟

问题

之前在jenkins上调用Maven打包时报错

/usr/bin/env: python3: No such file or directory

然后我登上机器上却能找到python3环境

/usr/bin/env python3
Python 3.4.3 (default, Nov 17 2016, 01:08:31)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

在机器上直接执行maven命令也能成功打包, 现象令人惊奇, 真的是环境用多了总有一天会遇到bug, (͡° ͜ʖ ͡°).

根本原因

使用""Invoke top-level Maven targets""打包时环境变量和机器上的环境变量不一致 具体请参考 Environment settings are different in Pre/Post-Build "Invoke top-level Maven targets" and in Maven Job main build step

解决方法

利用EnvInject Plugin添加环境变量

  • 在jenkins里面找到Configure
  • 在Build下面找到Add build step
  • 选中Inject environment variables
  • 在Environment Properties Content里面填入变量

我的变量

PATH=/Python-3.4.3/bin:$PATH

例如:

添加环境变量

其他

修改环境变量后jenkins不报变量的错了但是又报动态链接库(.so文件)的错误,真令人头秃. 最后只能祭出大杀器重装Python3, 然而突然意识到自己并没有root权限, 坑爹呢这是!!!!

最后终于被我找到了免root安装方式

wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
tar -xvJf Python-3.4.3.tar.xz
cd Python-3.4.3
#--prefix可以指定有权限的任意目录,会在目录下生成bin  include  lib  share
./configure --prefix=./python3
make install

参考