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
jenkins之SSH Publishers环境变量的更多相关文章
- Jenkins持续部署-Windows环境持续部署探究1
目录 Jenkins持续部署-Windows环境持续部署探究1 目录 前言 目的 方案流程 技术实现 PowerShell FTP上传插件 环境变量插件 脚本执行 远程调用 升级服务 启动服务 总结 ...
- 解析docker中的环境变量使用和常见问题解决
docker容器中的环境变量 docker可以为容器配置环境变量.配置的途径有两种: 在制作镜像时,通过ENV命令为镜像增加环境变量.在容器启动时使用该环境变量. 在容器启动时候,通过参数配置环境变量 ...
- 个人环境搭建——搭建jenkins持续构建集成环境
---恢复内容开始--- 搭建jenkins持续构建集成环境 要搭建jenkins持续构建集成环境,首先要安装tomcat和JDK: 第一部分,基本说明: 敏捷(Agile) 在软件工程领域 ...
- 全新 Mac 安装指南(编程篇)(环境变量、Shell 终端、SSH 远程连接)
注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 Mac 新用户,如何在 Mac OS X 系统上配置开发与上网环境,另有<全新 Mac 安装指南(通用篇)>作 ...
- SSH登录远程主机执行脚本找不到环境变量
这是因为在Linux上,bash会有四种模式,根据不同的case,Linux会加载不同模式的bash.一般如果你自己直接登录主机,能看到环境变量,但是使用ssh 远程登录执行脚本就找不到环境变量,那么 ...
- 解决SSH远程执行命令找不到环境变量的问题
通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同, ...
- ssh连接远程主机执行脚本的环境变量问题
近日在使用ssh命令ssh user@remote ~/myscript.sh登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题: ~/myscript.sh: line n: app: co ...
- Jenkins可用环境变量列表以及环境变量的使用(Shell/Command/Maven/Ant)
一.可用环境变量列表(以下来自google翻译): BRANCH_NAME 对于多分支项目,这将被设置为正在构建的分支的名称,例如,如果您希望从而master不是从特征分支部署到生产. CHANGE_ ...
- Jenkins可用环境变量以及使用方法
Jenkins可用环境变量以及使用方法
随机推荐
- jQuery.each的function中有哪些参数
1.没有参数 $("img").each(function(){ $(this).toggleClass("example"); }); 2.有一个参数,这个参 ...
- Java8新特性概览
Java8新特性简介 a)速度更快 1.对于JVM内存模型的新定义,将永久代从堆内存中移除,以前HotSpot JVM堆内存分为三块:1.年轻代 2.年老代 3.持久代 点击回顾 取而代之的是 ...
- linux基础命令之1
1.创建文件夹:mkdir 文件夹名称 2.创建文件:touch 文件名称 3.编辑文件:vi 文件名称 4.保存文件::wq
- [LeetCode] 448. 找到所有数组中消失的数字 ☆
描述 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. 您 ...
- three.js展示三维模型
1.概要 最近学习Three.js,尝试加载一些3d max导出的obj.stl模型,在展示模型的时候遇到了一些问题,模型的尺寸.位置和旋转角度每次都靠手工调整,非常的不方便,就想着写一个方法来随心所 ...
- php 执行大量sql语句 MySQL server has gone away
php 设置超时时间单位秒 set_time_limit(3600); php 设置内存限制ini_set('memory_limit', '1024M'); mysql服务端接收到的包的大小 ...
- Flink原理(四)——任务及调度
本文是博主阅读官网文档.博客及书籍后自己所思所得,若是存在有误的地方,欢迎留言分享,谢谢! 一.任务调度 Flink是通过task slot的来定义执行资源的,为优化资源的利用率,Flink通过slo ...
- QT5无法定位程序输入点 于动态链接库QtCore5.dll的解决
本人新手刚接触QT5,今天在写程序时,在QtCreator中可以运行,但是单独运行.exe文件时报错 之后发现是因为我之前在path路径中添加了MinGw,导致里面也有Qt库.但是我编译的时候用的是安 ...
- 在线研讨会预热 | 基于ASPICE&CNAS的单元测试介绍
随着新能源车.智能驾驶技术的快速发展,软件本身复杂度越来越高,应用场景也是复杂多样,如何保证软件质量对我们来说是一个严峻的挑战.软件测试作为软件质量保证的重要手段,被各大整车厂和供应商 ...
- SourceTree&Git -01 -代码拉取推送流程 -提交时的相关注意事项
1.进行文件的暂存,忽略不提交的文件 防止自己的文件从仓库拉取时被覆盖掉 2.获取,然后从仓库拉取内容 (勾选被合并提交的内容) 先获取,可以防止冲突的发生 3.推送自己暂存的文件 推送失败,请再次进 ...