jenkins發(fā)布java網(wǎng)站項目【新更新利用ansible發(fā)布】

先看一張java發(fā)布流程圖


image.png

步驟基本分為以下幾步:


image.png

細分的話,自動化部署項目流程大致為:
1.拿到git地址(權(quán)限)
2.拉去代碼clone
3.源碼編譯構(gòu)建
4.構(gòu)建文件拷貝到遠程web服務(wù)器
5.備份現(xiàn)在的程序文件
6.部署新的程序
7.重啟,測試訪問。

例子:
我這里只開了兩臺虛擬機,一臺作為gitalb服務(wù)器 + web發(fā)布服務(wù)器。一臺作為jenkins服務(wù)器
gitlab+web ---192.168.1.112
jenkins---192.168.1.252

項目準(zhǔn)備工作

1.gitlab上重新建一個空項目,并分配好成員。
2.web服務(wù)上將外部導(dǎo)入的java項目文件。初始化成git文件夾, 將現(xiàn)有項目文件夾推送至剛才建的git倉庫。

[root@server-3 tomcat-java-demo-master]# pwd
/opt/java_demo/tomcat-java-demo-master
[root@server-3 tomcat-java-demo-master]# ls
db  Dockerfile  LICENSE  pom.xml  README.md  src

執(zhí)行

git init  #初始化
git remote add origin http://192.168.1.112:85/webservice/java_web.git #將現(xiàn)有文件夾推送至倉庫(倉庫地址在gitlab項目頁復(fù)制)
git add .
git commit -m "frist push all"
git push -u origin master
(可以用分配的gitlab用戶push)

首次提交成功


image.png

image.png

jenkins部分

jenkins 指定job 運行節(jié)點為salve節(jié)點(192.168.1.112web 這臺)
記住,一旦指定了運行job為指定節(jié)點去運行,接下來所有的構(gòu)建,命令,環(huán)境,都是用salve節(jié)點的,也都是在salve上去執(zhí)行的。?。。?/p>

所以我們要在jenkins設(shè)置salve節(jié)點的地方,聲明salve機器上安裝的jdk,maven這些環(huán)境變量,確保運行命令時可以直接調(diào)用。

系統(tǒng)設(shè)置 ----節(jié)點管理----配置從節(jié)點---往下找到節(jié)點屬性,可參考salve上/etc/profile文件進行填寫
(也可以在執(zhí)行的shell窗口聲明如:export JAVA_HOME=/usr/local/jdk)


image.png

保存,退出。

創(chuàng)建job ,配置如下圖(可供參考)

image.png
image.png

image.png

其中有個問題,因為mvn自帶源太慢了,所以需要換成國內(nèi)源。
步驟:
到salve機器上,修改mvn安裝目錄下conf文件夾下的setting.xml,保存退出,就更換成國內(nèi)源了。

vim settings.xml
找到<mirror>標(biāo)簽
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
image.png

整個自動化部署配置完了。點擊構(gòu)建。


image.png

結(jié)果:


image.png

image.png

image.png

簡單做個nginx反向代理tomcat

upstream java{
    server 127.0.0.1:8080;
}
server {
    listen 80;
    server_name 192.168.1.112;
    access_log /var/log/java_acc.log;
    location / {
        proxy_pass http://java;
    }
}
image.png

項目回滾

如果需要對線上代碼進行回滾,將備份目錄下的備份.war文件 覆蓋現(xiàn)在線上的目錄,重啟tomcat即可


image.png

總結(jié):
只有先理清手動部署的流程,才能將其自動化。 這里創(chuàng)建git部分在生產(chǎn)中可以忽略,畢竟大多肯定都是直接
有項目的。salve 節(jié)點運行job,所有命令,環(huán)境用的都是salve的。一定要在節(jié)點安裝好java環(huán)境和maven,jenkins只負責(zé)分配任務(wù)。

配置salve 節(jié)點--節(jié)點中配置用到的jdk,maven,jre 等環(huán)境變量---創(chuàng)建job,按流程去配置步驟。

20210428更新:

利用ansible批量部署項目
1.安裝插件:Ansible plugin

  1. 編寫playbook.yml (將上面配置的流程寫進yml腳本中)
- hosts: "{{ env }}"
  tasks:
  - name: scp war package
    copy: src="{{item}}"  dest=/tmp/ROOT.war
    with_fileglob:
      - "/opt/jenkins_home/workspace/java_build/target/*.war"
  
  - name: Backup java file
    tags: bk
    shell: tomcat=/usr/local/tomcat && cd $tomcat/webapps && mv *.war /data/backup/ROOT_$(date +"%F_%T").war
  
  - name: Update war and restart tomcat service
    tags: bushu
    shell:
      tomcat=/usr/local/tomcat &&
      mv /tmp/ROOT.war $tomcat/webapps &&
      pid=$(ps -ef|grep tomcat|grep -v 'grep'|awk '{print $2}') &&
      [ -n "$pid" ] &&  kill -9 $pid &&
      nohup  /usr/local/tomcat/bin/startup.sh

hosts為什么是 {{env}} ?先忽略 后面會解釋

  1. 打開jenkins-job配置界面。 現(xiàn)在,可以將ssh發(fā)送文件并執(zhí)行命令那一欄的版塊刪掉了。
    在保留mvn clean構(gòu)建命令行步驟的同時,我們增加ansible構(gòu)建步驟


    image.png

    image.png

點擊這里的高級,填寫變量


image.png

image.png

前面又新創(chuàng)建了一條參數(shù)化構(gòu)建:


image.png

保存退出。
運行構(gòu)建界面:


image.png

構(gòu)建結(jié)果:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容