zoukankan      html  css  js  c++  java
  • jenkins之SSH Publishers环境变量

    我使用的是docker部署jenkins,使用172.16.1.245作为部署服务器。

    1.问题

    在SSH Publishers里执行的环境变量,不是ssh server主机设置的环境变量,这样会导致某些通过SSH Publishers执行的程序因为环境变量不同而执行错误。

    2.实际案例

    例如我们在172.16.1.245机器设置环境变量LD_LIBRARY_PATH

    2.1设置LD_LIBRARY_PATH

    2.1.1先设置/etc/profile

    vi /etc/profile

    使设置生效

    source /etc/profile

    2.1.2再设置root/.bash_profile

    vi ~/.bash_profile

    ~代表当前用户目录,例如root用户~等同于root,所以上面命令等同于

    vi root/.bash_profile

    使设置生效

    source ~/.bash_profile

    2.1.3检查设置是否生效

    echo $LD_LIBRARY_PATH

     

     经过检查LD_LIBRARY_PATH环境变量与设置的一致

    2.2通过jenkins的SSH Publishers查看环境变量LD_LIBRARY_PATH

    2.2.1新建job,选择“创建一个自由风格的软件项目”

    2.2.2在“构建”里选择“Send files or execute commands over SSH”

    2.2.3在SSH Publishers填入一下内容

    就是打印环境变量LD_LIBRARY_PATH

    2.2.4立即构建,查看控制台输出

    应该输出“./:./”,可是什么都没有输出,说明环境变量有问题。

    2.3原因

    查了很多博客,大概意思就是,通过ssh执行远程主机命令,使用的是本地服务器的环境变量;使用ssh登录远程主机使用的是远程服务器的环境变量。

    即,使用SSH Publishers执行exec使用的是ssh执行远程主机命令,使用的是jenkins部署服务器的环境变量(我使用的是docker部署的,即为容器的环境变量)。

    https://www.cnblogs.com/zhenyuyaodidiao/p/9287497.html

    2.4解决问题

    我需要使用远程服务器(172.16.1.245),而不是docker的环境变量。

    使用 source使环境变量生效

    source /etc/profile
    source ~/.bash_profile
    echo $LD_LIBRARY_PATH

    可以看到,环境变量LD_LIBRARY_PATH是远程服务器(172.16.1.245)环境变量,设置成功。

    3.总结

    我出现的问题是使用jenkins部署程序出现异常,使用xshell远程连接后运行程序,程序运行正常。检查过jenkins的SSH Publishers里执行命名的用户,服务器是否为172.16.1.245,都没有问题,最后检查到jenkins输出的环境变量PATH与172.16.1.245的PATH不一样,最后找到问题的原因。

    如果环境变量涉及多个文件,需要让设置的所有文件生效。例如:PATH

  • 相关阅读:
    ARM学习笔记10——GNU ARM命令行工具
    ARM学习笔记9——ARM汇编汇编语言中的伪指令
    ARM学习笔记8——通用寄存器和存储器内容交换指令和软中断指令
    ARM学习笔记7——乘法指令
    ARM学习笔记6——程序状态寄存器访问指令
    ARM学习笔记5——程序状态寄存器
    ARM学习笔记4——加载存储指令
    ARM学习笔记3——数据处理指令
    ARM学习笔记2——分支跳转指令
    ARM学习笔记1——Arm寄存器与模式的关系
  • 原文地址:https://www.cnblogs.com/SmilingEye/p/11775632.html
Copyright © 2011-2022 走看看