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

        終極辦法:

               export PATH=$JAVA_HOME/bin:        //  寫在最前面

            完整版本如下:

export MAVEN_HOME=/**/**

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home

export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH:$MAVEN_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

 

 

(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 ***** [email protected]:/data/webapp

    ssh [email protected] "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:完成。

      遇到一個奇怪的問題,最近:爲什麼通過上面命令追加可以設置成功呢,而我嘗試手動添加並沒有免密成功。我查看文件,命令追加和我手動添加的 公鑰 一模一樣。

      在之前,我通過手動操作,是可以配置免密成功的。如果是文件權限問題,我已經安裝網絡上講的配置了文件和文件夾的權限,想不明白,希望有人解答。

 

發佈了34 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章