jenkins bash: jar: command not found 之环境变量

在操作 jenkins 的过程中,出现很多问题,自己做了个汇总,和大家分享一下:

(1)出现问题原因1:目标服务器jar,命令不存在

           解决方法:

           安装 jar 命令

          #cd /usr/bin

          #yum install jar       必须先进入/usr/bin,下同 

 

          目标服务器:查看环境变量 echo $JAVA_HOME

           [root@zk1 ~]# echo $JAVA_HOME
           /data/program/jdk1.8.0_101

           

        有时候目标服务器已经存在 jar 命令了,但是 jenkins 还是会报错;

       (1) 需要在 jenkins 执行 jar 命令的脚本之前加上 环境变量

              export   ***环境变量   如: export JAVA_HOME=/data/program/jdk1.8.0_101

        (2)  给 jar 添加软链接    如:#cd /usr/bin #ln -s -f  /data/program/jdk1.8.0_101/bin/jar   jar               

              目标服务器:查看环境变量 

              #echo $JAVA_HOME

              # java -version     

              #sudo find / -name jar       

              如果 /usr/bin 下面有 jar 命令,在/usr/bin目录下创建jar的软连接。

              #cd /usr/bin

              # ln -s -f  /data/program/jdk1.8.0_101/bin/jar   jar

              ( ln -s 源文件 目标文件  

                 -b 删除,覆盖以前建立的链接
                 -d 允许超级用户制作目录的硬链接
                 -f 强制执行
                 -i 交互模式,文件存在则提示用户是否覆盖
                 -n 把符号链接视为一般目录
                 -s 软链接(符号链接)
                 -v 显示详细的处理过程 )

              

       例如: nc: command not found

                解决:yum install -y nc

 

        other: 如果提示javah:commond not found,于是照葫芦画瓢,输入命令 

            cd /usr/bin

            ln -s -f /usr/lib/jvm/jdk1.6.0_30/bin/javah

 

 

(2)出现问题原因2:环境变量问题

    查找原因:在jenkins的日志里打印出环境变量,

                    你会发现是jenkins服务器的环境变量,并不是目标主机的环境变量

                    (脚本里面执行 echo $PATH 打印出的是jenkins本地环境的PATH

                     echo $PATH

                     echo $JAVA_HOME

   解决方法: 在执行命令之前需要设置环境变量为目标主机的环境变量。

    

            在Exec command 里写上自己的项目启动脚本

            在执行 java -jar 命令之前需要

            export PATH=目标主机的PATH       如图:

 

3)出现问题原因3:异常退出ssh 问题

 

    jenkins ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]

 

    解决方法:构建后操作 - send build artifacts over ssh-高级

    

    

(4) Exception when publishing, exception message [Exec exit status not zero. Status [127]]

    这个 bug 有很好的解决方法吗?   

    rsync -vrtopga --delete --exclude-from=/usr/local/bin/rsync.ignore ***** root@127.0.0.1:/data/webapp

    ssh root@127.0.0.1 "sh /data/serverApp/resin/bin/resin.sh restart"  

 

(5) 配置免密之后;第一次得手动登录一次。不然 jenkins还是会免密登录失败。

     免密登录操作:A 免密登录 B  ;A 的id_rsa.pub追加到 B 的authorized_keys

      https://blog.csdn.net/wind520/article/details/38421359

     linux系统配置免密码的方式:

      1:ssh-keygen -t rsa        (一直回车即可!!!)

         生成密钥 (如果已经有了,就不要执行!!!!!!!后果自己想)

      2:ssh-copy-id -i ~/.ssh/id_rsa.pub  用户@B

         把本机的公钥追到 B 的 .ssh/authorized_keys 里 (在 A 执行)

      4:如果ssh的端口不是22,可用下面命令

          ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 23 用户@B"

      5:完成。

      遇到一个奇怪的问题,最近:为什么通过上面命令追加可以设置成功呢,而我尝试手动添加并没有免密成功。我查看文件,命令追加和我手动添加的 公钥 一模一样。

      在之前,我通过手动操作,是可以配置免密成功的。如果是文件权限问题,我已经安装网络上讲的配置了文件和文件夹的权限,想不明白,希望有人解答。

 

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试