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

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

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

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

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

環(huán)境準備

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

編寫好ansible腳本

在服務器事先準備好微服務的ansible腳本。
ansible文件目錄:


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

 

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

  • 文件內容如下:

  • 文件內容如下:

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


Jenkins新建任務

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

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

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

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

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


詳細腳本如下:

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

"

 

總結

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

標簽: 微服務 

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

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

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