jenkins做爲java的好基友,經歷過單體項目時代->集羣項目時代->容器集羣分佈式時代,使用穩定可靠,cpu友好(就淚存有點兒難看),若是有問題就。。。
(固然這種狀況很少(_) ) , 至於後期又有了jenkins x(容器版),對於非容器環境這裏這裏就不介紹啦java
而後簡略介紹我本身的項目狀況吧,說說個人思路;首先個人項目有一個後臺mee(java)、mee-api(多個,爲Java項目)以及gee-api項目(多個,go項目),後臺項目暫不集羣分佈(目前夠用),
mee-api及gee-api項目只是個模子,主要作分佈式或集羣微服務,目前只有這三個微服務在跑,整個打包部署過程。。。純手工(很麻煩),由於專一於開發目前ci/cd也不復雜,因此就借用了本人以前寫的windows自動部署小工具,目測夠用,但有一點兒較爲麻煩,就是對於純開發配置較爲麻煩,每次運行仍是須要配合服務端腳本,同時運行命令也較爲複雜(偶爾也會有莫名其妙的問題),遂~此次特地研究了下jenkins(主要是近幾個公司全用這個來構建;由於我本人使用的win本,因此如下配置對於win的構建比較友好哈~(若是您是linux部署請自行將cmd腳本更改成shell腳本 目測就好😄)linux
首先,你得須要安裝jenkins(自沒必要多說了。。。),如下爲jenkins宿主機(windows)系統下須要~git
安裝github
Manage Jenkins(jenkins管理)->Manage Plugins(插件管理)->搜索可用插件
ssh、git(或svn,視需求)、maven(或gradle,視需求)、
Manage Jenkins(jenkins管理)->Global Security(全局安全)
基礎配置spring
Manage Jenkins(jenkins管理)->Global Tool Configuration(全局工具配置)
注意::在全局工具配置
中無需配置go環境,這裏後面再說(大坑...)shell
New View
(構建任務會放在指定標籤下)選擇(鼠標點擊)新建的視圖標籤,而後選擇左側的New Item
windows
填寫構建的基本信息
api
構建配置詳情
安全
首先說,默認按照插件的方式配置go的構建十分的麻煩(沒法下載go sdk以及go項目依賴也沒法拉取),固然解決的方式也很簡單;
go mod沒法下載依賴::在window cmd命令中加入對go env的GOPROXY的設置(同理對於go打包的配置也是一致的)
沒法使用go的命令:: 在windows cmd命令行中使用絕對路徑調用其命令
以上問題的解決詳見下圖,具體不作解釋
jenkins 執行遠程腳本命令
/usr/bin/sh /mnt/sh/deploy_go.sh external-api /mnt/app/gee >/dev/null 2>&1 &
java(springboot)應用執行腳本
/usr/bin/sh /mnt/sh/deploy_go.sh external-api /mnt/app/gee >/dev/null 2>&1 &
java 部署腳本deploy.sh
,記得部署的時候使用chmod a+x deploy.sh
#!/bin/sh export BUILD_ID=dontKillMe export JAVA_HOME=/usr/local/java/jdk1.8.0_222 export JRE_HOME=/usr/local/java/jdk1.8.0_222/jre #項目名稱 xxx.jar project_name=$1 #部署路徑 deploy_path=$2 #文件路徑 upload_path=/mnt/pkg/$1 if [ -f "${upload_path}" ]; then # kill process ps -ef|grep ${project_name}|grep java|awk '{print $2}'|xargs kill -9 # remove file rm -rf ${deploy_path}/${project_name} # backup file cp -r ${upload_path} ${deploy_path}/${project_name}_`date "+%Y%m%d%H%M%S"` # move file mv ${upload_path} ${deploy_path}/${project_name} # exec deploy cd ${deploy_path} && nohup java -jar ${deploy_path}/${project_name} >/dev/null 2>&1 & else exit 0 fi
deploy_go.sh
,建立腳本後一樣須要chmod a+x deploy_go.sh
#!/bin/sh export BUILD_ID=dontKillMe #example gee project_name=$1 #deploy path deploy_path=$2 #file path upload_path=/mnt/pkg/$1 if [ -f "${upload_path}" ]; then # kill process kill -9 `ps -C ${project_name} -o pid=` # remove file rm -rf ${deploy_path}/${project_name} # backup file cp -r ${upload_path} ${deploy_path}/${project_name}_`date "+%Y%m%d%H%M%S"` # move file mv ${upload_path} ${deploy_path}/${project_name} # add exec auth chmod a+x ${deploy_path}/${project_name} # exec deploy cd ${deploy_path} && nohup ./${project_name} > ./${project_name}.log 2>&1 & else exit 0 fi
=>完結,如能有謬誤之處請留言哈😂<=