一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

適合小公司的自動化部署腳本

馬哥Linux運(yùn)維 ? 來源:稀土掘金技術(shù)社區(qū) ? 2023-12-19 09:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景(偷懶)

在小小的公司里面,挖呀挖呀挖。快挖不動了,一件事重復(fù)個5次,還在人肉手工,身體和心理就開始不舒服了,并且違背了個人的座右銘:“偷懶”是人類進(jìn)步的第一推動力。

每次想要去測試環(huán)境驗(yàn)證個新功能,又或者被測試無情的催促著部署新版本后;都需要本地打那個200多M的jar包;以龜速般的每秒幾十KB網(wǎng)絡(luò),通過ftp上傳到服務(wù)器;用爛熟透的jps命令查找到進(jìn)程,kill后,重啟服務(wù)。

是的,我想偷懶,想從已陷入到手工部署的沼澤地里走出來。如何救贖?

自我救贖之路

我的訴求很簡單,想要一款“一鍵CI/CD的工具”,然后可以繼續(xù)偷懶。為了省事,我做了以下工作

找了一款停止服務(wù)的腳本,并做了小小的優(yōu)化

首推 陳皮大哥的停服腳本(我在里面加了個sleep 5);腳本見下文。只需要修改 APP_MAINCLASS的變量“XXX-1.0.0.jar”替換為自己jar的名字即可,其它不用動。

該腳本主要是通過jps + jar的名字獲得進(jìn)程號,進(jìn)行kill。( 腳本很簡單,注釋也很詳細(xì),就不展開了,感興趣可以閱讀下,不到5分鐘,寫過代碼的你能看懂的)

把以下腳本保存為stop.sh


#!/bin/bash
# 主類
APP_MAINCLASS="XXX-1.0.0.jar"
# 進(jìn)程ID
psid=0
# 記錄嘗試次數(shù)
num=0
# 獲取進(jìn)程ID,如果進(jìn)程不存在則返回0,
# 當(dāng)然你也可以在啟動進(jìn)程的時候?qū)⑦M(jìn)程ID寫到一個文件中,
# 然后使用的使用讀取這個文件即可獲取到進(jìn)程ID
getpid() {
   javaps=`jps -l | grep $APP_MAINCLASS`
   if [ -n "$javaps" ]; then
      psid=`echo $javaps | awk '{print $1}'`
   else
      psid=0
   fi
}
stop() {
   getpid
   num=`expr $num + 1`  
   if [ $psid -ne 0 ]; then
    # 重試次數(shù)小于3次則繼續(xù)嘗試停止服務(wù)
    if [ "$num" -le 3 ];then
    echo "attempt to kill... num:$num"
      kill $psid
      sleep 5
    else
    # 重試次數(shù)大于3次,則強(qiáng)制停止
      echo "force kill..."
      kill -9 $psid      
    fi
  # 檢查上述命令執(zhí)行是否成功
    if [ $? -eq 0 ]; then
       echo "Shutdown success..."
    else
       echo "Shutdown failed..."
    fi
    # 重新獲取進(jìn)程ID,如果還存在則重試停止
    getpid
    if [ $psid -ne 0 ]; then
       echo "getpid... num:$psid"
       stop
    fi
   else
      echo "App is not running"
   fi
}
stop

編寫2行的shell 啟動腳本

修改腳本中的XXX-1.0.0.jar為你自己的jar名稱即可。保存腳本內(nèi)容為start.sh。jvm參數(shù)可自行修改


basepath=$(cd `dirname $0`; pwd)
nohup java -server -Xmx2g -Xms2g -Xmn1024m  -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:-UseAdaptiveSizePolicy -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -Xloggc:logs/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:HeapDumpPath=logs/dump.hprof -XX:ParallelGCThreads=4 -jar $basepath/XXX-1.0.0.jar &>nohup.log &

復(fù)用之前jenkins,自己寫部署腳本

腳本一定要放到 Post Steps里

3304852c-9d9d-11ee-8b88-92fbcf53809c.jpg

9行腳本,主要干了幾件事:

備份正在運(yùn)行的jar包;(萬一有啥情況,還可以快速回滾)

把jenkins上打好的包,復(fù)制到目標(biāo)服務(wù)上

執(zhí)行停服腳本

執(zhí)行啟動服務(wù)腳本

腳本見下文:


ssh -Tq $IP << EOF 
source /etc/profile
#進(jìn)入應(yīng)用部署目錄
cd /data/app/test
#
DATE=`date +%Y-%m-%d_%H-%M-%S`
#刪除備份jar包
rm -rf /data/app/test/xxx-1.0.0.jar.bak*
#備份歷史jar包
mv /data/app/test/xxx-1.0.0.jar /data/app/test/xxx-1.0.0.jar.bak$DATE
#從jenkins上拉取最新jar包
scp root@$jenkisIP:/data/jenkins/workspace/test/target/XXX-1.0.0.jar /data/app/test
# 執(zhí)行停止應(yīng)用腳本
sh /data/app/test/stop.sh
#執(zhí)行重啟腳本
sh /data/app/test/start.sh
exit
EOF

注:

$IP是部署服務(wù)器ip,$jenkisIP是jenkins所在的服務(wù)器ip。在部署前請?jiān)O(shè)置jenkins服務(wù)器和部署服務(wù)器之間ssh免密登錄

/data/app/test 是部署jar包存放路徑

stop.sh 是上文的停止腳本

start.sh 是上文的啟動腳本

總結(jié)

如果不想把時間浪費(fèi)在本地打包,忍受不了上傳jar包的龜速網(wǎng)絡(luò),人肉停服和啟動服務(wù)。請嘗試下這款自動部署化腳本。小小的投入,帶來大大的回報。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9795

    瀏覽量

    87996
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70747
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    398

    瀏覽量

    28461

原文標(biāo)題:適合小公司的自動化部署腳本

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    有經(jīng)驗(yàn)電子IT男說說大公司小公司有的特點(diǎn),該如何抉擇

    可能由于你之前工作的公司是個小公司,會稍微麻煩點(diǎn),跳槽的薪水可能會差點(diǎn)。上面就是我對大,小公司的一些了解,希望大家指正和指教,把你們的經(jīng)驗(yàn)分享給迷茫的我們,讓我們能夠比較好的規(guī)劃未來,先謝謝大家了{(lán):3:}
    發(fā)表于 05-22 12:46

    有經(jīng)驗(yàn)電子IT男說說大公司小公司有的特點(diǎn),該如何抉擇

    可能由于你之前工作的公司是個小公司,會稍微麻煩點(diǎn),跳槽的薪水可能會差點(diǎn)。上面就是我對大,小公司的一些了解,希望大家指正和指教,把你們的經(jīng)驗(yàn)分享給迷茫的我們,讓我們能夠比較好的規(guī)劃未來,先謝謝大家了{(lán):3:}
    發(fā)表于 05-22 14:00

    求指教:剛畢業(yè)大學(xué)生進(jìn)小公司好,還是去大公司好?

    剛畢業(yè)大學(xué)生進(jìn)小公司好,還是去大公司好?
    發(fā)表于 02-22 17:04

    今日話題:初入江湖,選擇小公司or大公司

    `大公司的制度、流程、體系、規(guī)范;小公司的靈活、重任、自由,都是各有優(yōu)點(diǎn);小編也曾經(jīng)一度苦惱!有個朋友說他畢業(yè)后去了一家外企做dev,平時工作偏業(yè)務(wù),很少接觸到深層次技術(shù)性的東西,沒辦法,只有自己學(xué)
    發(fā)表于 03-04 09:46

    中大公司的經(jīng)理和小公司的總監(jiān),你們怎么選擇的?為啥

    選擇在大公司熬幾年還是小公司里熬幾年?還是從大公司小公司
    發(fā)表于 02-27 14:56

    賽思互動:小公司需要上CRM嗎?

    對于小公司是否需要CRM這個問題,我們主要從小公司的生存方面來談。 對于小公司來講,第一目標(biāo)是生存,先要在激烈的市場競爭中存活下來??蛻羰?b class='flag-5'>公司的衣食父母,如何提高對客戶的服務(wù)質(zhì)量,關(guān)系
    發(fā)表于 07-01 09:01

    賽思互動:小公司需要上CRM嗎?

    對于小公司是否需要CRM這個問題,我們主要從小公司的生存方面來談。 對于小公司來講,第一目標(biāo)是生存,先要在激烈的市場競爭中存活下來。客戶是公司的衣食父母,如何提高對客戶的服務(wù)質(zhì)量,關(guān)系
    發(fā)表于 07-02 10:58

    硅谷小公司推100核CPU 性能是英特爾四倍

    硅谷小公司推100核CPU 性能是英特爾四倍  一個處理器(CPU)最多能有幾個核,雙核、四核還是八核?一家硅谷小公司給出的最新答案是:100個。     這家名為T
    發(fā)表于 11-30 11:10 ?828次閱讀

    自動化測試腳本開發(fā)技巧

    開發(fā)自動化測試腳本的技巧和心得軟件測試 增量式調(diào)試腳本 錄制測試腳本,和其他的軟件開發(fā)成果一樣,會變得非常大。為了可以成功的回放,需要調(diào)試幾百行的代碼,為了參數(shù)
    發(fā)表于 03-26 16:24 ?53次下載

    畢業(yè)生,進(jìn)大公司好還是進(jìn)潛力小公司好?

    當(dāng)然,小公司普遍工資不會太高,這也是畢業(yè)生不太會去考慮的一個問題??墒沁@問題又可以反過來這樣想,去大公司拿的工資,能拿多久?大公司里升職難,個人價值很難展示,競爭壓力大導(dǎo)致應(yīng)屆畢業(yè)生即便去了大
    發(fā)表于 05-18 17:40
    畢業(yè)生,進(jìn)大<b class='flag-5'>公司</b>好還是進(jìn)潛力<b class='flag-5'>小公司</b>好?

    蘋果、亞馬遜被投訴存在不公平競爭行為損害小公司的利益

    歐洲投訴蘋果、亞馬遜在濫用市場主導(dǎo)地位,以不公平競爭行為確保自己的主導(dǎo)地位,嚴(yán)重?fù)p害小公司的利益。購Premium服務(wù)時,蘋果會抽成30%。
    發(fā)表于 12-14 17:19 ?1001次閱讀

    Versa 是怎樣做 AI 的,以及小公司如何做 AI 才能贏

    今天我想跟大家討論一個話題,就是小公司怎么做 AI?小公司在這個 AI 時代怎么做? 我小小的介紹一下 Versa,它是基于計(jì)算機(jī)視覺的人工智能公司,成立于今年4月份。今年8月我們的首款產(chǎn)品 Versa 上線,11月份我們
    的頭像 發(fā)表于 01-02 15:17 ?4457次閱讀

    程序員是選擇大公司還是小公司

    我記得前一段時間,我在北京的一個朋友,剛畢業(yè)一年,他問我一個問題,我能不能去大公司面試呢?你說我該去大公司,還是小公司呢?
    的頭像 發(fā)表于 02-12 16:25 ?2665次閱讀

    隨著小公司經(jīng)營規(guī)模的擴(kuò)大 利用AI打造五星級客戶體驗(yàn)才能取勝

    快速的技術(shù)進(jìn)步為小公司提供了服務(wù)世界各地客戶的機(jī)會,并有效地與大公司爭奪新客戶。這些規(guī)模較小的公司正在迅速走向全球,部署各種技術(shù)支持的解決方案,如
    發(fā)表于 02-27 16:51 ?914次閱讀

    keil自動化編譯腳本

    這是一個 keil 的自動化編譯腳本,可被其他腳本或程序調(diào)用,接收參數(shù)并按參數(shù)編譯 keil 工程,而不必打開 keil 軟件,實(shí)現(xiàn)程序上的自動化。
    的頭像 發(fā)表于 10-16 17:04 ?2872次閱讀
    keil<b class='flag-5'>自動化</b>編譯<b class='flag-5'>腳本</b>