Jenkins配置詳解


Jenkins一鍵部署思路與實現

  • 從版本管理工具(SVN、Git)拉取最新代碼到中間服務器(Jenkins服務器)

  • 代碼在中間服務器編譯打成war包

  • 把war包復制到目標服務器臨時位置

  • 將臨時位置的war包利用 .sh 腳本復制到指定的tomcat下 並啟動服務

    目標服務器是指 : war包運行的服務器

部署Java

1、新建任務

在Jenkins控制台新建任務,輸入新建的任務名稱,然后選擇“構建一個自由風格的軟件項目”,點擊OK。

2、實現部署

2.1、Generl

不進行操作

2.2、源碼管理

選擇Subversion

Repository URL : SVN的地址@HEAD @HEAD獲取最新本版代碼

Credentials :憑證,賦予訪問SVN倉庫的用戶

Local module directory :選填

2.3、構建觸發器

不進行操作

2.4、構建環境&構建

clean package -Dmaven.test.skip=true 打包並且跳過測試

此時已經在中間服務器中將拉取的文件打成war包。

2.5、構建后操作

選擇 Send build artifacts over SSH

配置 SSH Server

Name : 使用的服務器 ,在系統管理-> 系統設置 -> SSH Server 點擊增加配置

​ Name : 名稱

​ Host Name : 主機地址

​ UserName : 使用的根地址

​ Remote Directory : 服務目錄 de 地址

​ 點擊“高級”設置服務器密碼 鏈接的端口號 以及超時時間等信息 點擊Test Configuration 測試鏈接

​ 上述幾個地址就構成接下來操作的根路勁

Transfers :

​ Source files : 源文件 指本次任務中在中間服務器的war包位置

通常使用:
		**/*.war

​ Remove Prefix : 刪除前綴 不填

​ Remote directory : 遠程目錄 是指 將中間服務器的war包復制到目標服務器指定的臨時位置

​ Exec command :執行的 .sh 腳本文件的地址

點擊保存

3、附: sh 文件

#!/bin/bash

export JAVA_HOME=/home/software/jdk/jdk1.8.0_162
rm -rf  /tomcat/tomcat-9-plan-report/webapps/ROOT.war
rm -rf  /tomcat/tomcat-9-plan-report/webapps/ROOT/
rm -f   /tomcat/tomcat-9-plan-report/logs/*
cp /tomcat/jenkins_files/planreport-online-war/PlanReport/target/ROOT.war       /tomcat/tomcat-9-plan-report/webapps/
rm -rf  /tomcat/jenkins_files/tomcat-9-plan-report/*

cd /tomcat/tomcat-9-plan-report/bin/


TOMCAT_PATH=/tomcat/tomcat-9-plan-report/bin

echo "TOMCAT_PATH is $TOMCAT_PATH"

PID=`ps aux | grep /tomcat/tomcat-9-plan-report/bin | grep java | awk '{print $2}'`

if [ -n "$PID" ]; then
        echo "Will kill tomcat: $PID"
        sh "$TOMCAT_PATH/shutdown.sh"
        sleep 6
else echo "No Tomcat Process $PID"
fi

PID2=`ps aux | grep /tomcat/tomcat-9-plan-report/bin | grep java | awk '{print $2}'`

if [ -n "$PID2" ]; then
        kill -9 $PID2
        echo "Try to kill $PID2"
else echo "No Tomcat Process $PID2"
fi

sh "$TOMCAT_PATH/startup.sh"
sleep 3

PID=`ps aux | grep /tomcat/tomcat-9-plan-report/bin | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
        echo "\nRestart tomcat successfully!"
else
        echo "\nFail to startup tomcat"
        exit 1
fi


解析:

3.1、刪除tomcat下webapps下的文件和日志

3.2、復制文件

3.3、刪除臨時位置的war文件

3.4、進入tomcat的bin下

3.5、得到進程號

3.6、將進程殺掉 並停掉tomcat

3.7、啟動tomcat。

部署JS

基本同上

不同點:

1、 構建環境不選

2、構建選擇“執行shell”

echo $PATH
node -v
npm -v
cd code
npm install
npm run testbuild 

3、看圖

部署時可能遇見的問題:

SSH: Connecting from host [jenkins]
SSH: Connecting with configuration [167] ...
SSH: EXEC: STDOUT/STDERR from command [/home/jenkins_file/planreport_online-deply.sh] ...
bash: /home/jenkins_file/planreport_online-deply.sh: Permission denied
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [167] ...
ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [126]]
Build step 'Send build artifacts over SSH' changed build result to UNSTABLE
Finished: UNSTABLE

jenkins自動化構建時,執行遠程SSH時,返回錯誤狀態碼 126.

原因: 對應的.sh 腳本權限不足,修改需執行的腳本權限即可、

ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]
Build step 'Send build artifacts over SSH' changed build result to UNSTABLE

發布時,異常消息[Exec退出狀態不為零。狀態1.

原因:未知,解決:再次部署一遍、

-bash: ./bin/start.sh: /bin/bash^M: bad interpreter: No such file or directory

原因:在window下創建的文件,后將后綴修改為.sh,因此在Linux系統中會出現文件的格式是dos,只要將文件格式修改為unix就OK了

具體操作步驟

1、查看文件格式 用vim 打開出錯的文件 按 ESC鍵 再按shift+冒號 輸入 set ff 回車 可以看見 該文件的格式 fileformat=dos
2、按shift + 冒號 輸入 set ff=unix 回車 發現沒反應,那就對了。
3、可以按 shift + 冒號 set ff 查看 fileformat=unix


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM