中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

如何利用Jenkins+ansible+maven(java)方式自動化更新微服務(wù)

2019-08-29    來源:IT運維網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

一般在開發(fā)過程中,都會出現(xiàn)在聯(lián)調(diào)的過程中頻繁修改代碼,然后將最新代碼部署到開發(fā)環(huán)境中,提供給其他微服務(wù)的小伙伴聯(lián)調(diào)使用。傳統(tǒng)的方式都需要手動編譯代碼并打包,然后將打包傳到開發(fā)環(huán)境中,最后重啟服務(wù),這種方式非常耗時耗人力。為了節(jié)省開發(fā)聯(lián)調(diào)的時間,可以使用Jenkins+ansible+maven(java)的方式自動打包上傳到開發(fā)環(huán)境并自動重啟服務(wù)。

環(huán)境準(zhǔn)備

在服務(wù)器中安裝好JDK1.8、Jenkins、ansible、git客戶端等基礎(chǔ)軟件,這里就不詳細(xì)介紹每個軟件如何使用。

編寫好ansible腳本

在服務(wù)器事先準(zhǔn)備好微服務(wù)的ansible腳本。
ansible文件目錄:


文件說明:
  1. hosts文件主要記錄要更新微服務(wù)的服務(wù)器地址詳情,這里只需要ip地址和端口號,這里的地址詳情可以隨意寫,下面會在Jenkins任務(wù)中動態(tài)修改,文件內(nèi)容如下:

 

  1. roles文件夾下表示是每個項目執(zhí)行ansible所需要的配置和文件。roles/project文件夾表示執(zhí)行的一個任務(wù),project文件夾就是該任務(wù)所需要的ansible配置和文件,roles/project/files是ansible任務(wù)執(zhí)行所需要的文件,roles/project/tasks是任務(wù)執(zhí)行的配置,這里可以配置需要在目前服務(wù)器執(zhí)行的shell腳本,roles/project/vars是任務(wù)執(zhí)行的所需要的參數(shù),注意var下的配置都會在下面的Jenkins任務(wù)中動態(tài)修改。
 
  • 文件內(nèi)容如下:

  • 文件內(nèi)容如下:

  • 文件內(nèi)容如下:

                  
  1. project.xml是執(zhí)行project這個任務(wù)的關(guān)聯(lián)主機和roles信息,文件內(nèi)容如下:


Jenkins新建任務(wù)

  1. 新建一個maven項目任務(wù),這里maven項目中必須要包含pom.xml文件。

  1. 在新建的任務(wù)中添加構(gòu)建過程中的所需要的參數(shù),這里只要增加server_ip、server_port、server_pass這2個參數(shù)

  1. 添加版本控制地址,這里以git作為例子,可以執(zhí)行響應(yīng)的版本號,這里的版本號也可以通過參數(shù)來指定。

  1. 添加執(zhí)行maven命令

  1. 最后一步新增maven命令執(zhí)行完了之后執(zhí)行的shell腳本。最好保存就可以構(gòu)建了。


詳細(xì)腳本如下:

ansible_install=/opt/ansible ##之前寫好的ansible腳本

FOLDNAME=user

JARFILE=user.jar

SERVERNAME=user.service

cd ${ansible_install}/roles/project/vars

rm -rf main.yml

echo FOLDNAME: ${FOLDNAME} >> main.yml

echo JARFILE: ${JARFILE} >> main.yml

echo SERVERNAME: ${SERVERNAME} >> main.yml

cd ${ansible_install}

rm -rf hosts

echo '' >> hosts

echo '[project]' >> hosts

echo ${server_ip} ansible_ssh_port=${server_port} >> hosts

cd ${ansible_install}

cd roles/project/files/

rm -rf ./*.jar

cp  ${WORKSPACE}/user/target/${JARFILE} ./

expect -c "

set timeout 300 

    spawn ssh-copy-id -i /root/.ssh/id_rsa.pub -p ${server_port} root@${server_ip}

    expect {

    \"(yes/no)?\" {send \"yes\r\";exp_continue}

        \"*password:\" {send \"$server_pass\r\"}

        \"*again.\" {send \"$server_pass\r\"}

    }

    expect eof

"

cd ${ansible_install}

expect -c "

set timeout 3000 

    spawn ansible-playbook -i ${ansible_install}/hosts user.yml

    expect {

    \"(yes/no)?\" {send \"yes\r\";exp_continue}

        \"*password:\" {send \"$server_pass\r\"}

        \"*again.\" {send \"$server_pass\r\"}

    }

    expect eof

"

 

總結(jié)

完成自動化腳本之后,在開發(fā)聯(lián)調(diào)時就不用再手動打包部署了,只要在Jenkins中構(gòu)建下對應(yīng)Job就可以完成服務(wù)自動打包更新,提高了開發(fā)人員聯(lián)調(diào)效率。本文是針對mavne項目為例,其他語言(go、PHP、react等)只要事先準(zhǔn)備好腳本,同樣可以實現(xiàn)自動化更新服務(wù)。當(dāng)然還有缺點,目前還不可以自定化更新數(shù)據(jù)庫、安裝服務(wù)、多節(jié)點服務(wù)安裝和更新等場景,后續(xù)有興趣的同學(xué)可以實現(xiàn)這些場景。

標(biāo)簽: 微服務(wù) 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:征集令|“2019 IT運維十大樣板工程” 評選啟動

下一篇:ATEN宏正智能化運維管理公開課開講