jenkins自動(dòng)化發(fā)布

發(fā)布Java網(wǎng)站項(xiàng)目

發(fā)布框架

1634711617448.png

大致步驟

001 分布式構(gòu)建

步驟詳見(jiàn):【分布式構(gòu)建(Master/Slave)】
1634712393035.png

002 Git參數(shù)化

0001 設(shè)置分支

1634712872062.png

0002 設(shè)置發(fā)布節(jié)點(diǎn)(17服務(wù)器)

1634712932678.png

0003 新建項(xiàng)目

1634713601564.png
1634713757320.png

0004 推送現(xiàn)有文件夾到新建項(xiàng)目

#把18服務(wù)器的項(xiàng)目tomcat-java-demo-master推送到gitLab
[root@bogon tomcat-java-demo-master]# git config --global user.name "lql"
[root@bogon tomcat-java-demo-master]# git config --global user.email "lql_h@163.com"

[root@bogon ~]# cd tomcat-java-demo-master
[root@bogon tomcat-java-demo-master]# git init
[root@bogon tomcat-java-demo-master]# git remote add origin http://gitlab.pcitc.com/test/demo.git
[root@bogon tomcat-java-demo-master]# git add .
[root@bogon tomcat-java-demo-master]# git commit -m "Initial commit"
[root@bogon tomcat-java-demo-master]# git push -u origin master 

#注意
推送master的權(quán)限至少是Maintainer

003 配置git地址

1634717804581.png

0001 做一個(gè)測(cè)試

1634718309331.png
#17的服務(wù)器,即slave構(gòu)建
[root@localhost jenkins_home]# cd  /opt/jenkins_home/workspace/
[root@localhost workspace]# ls
java-demo  

004 代碼編譯構(gòu)建

0001 修改阿里云倉(cāng)庫(kù)

#網(wǎng)址
https://developer.aliyun.com/mvn/guide
#阿里云倉(cāng)庫(kù)
<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共倉(cāng)庫(kù)</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
#修改setting
/usr/local/maven/conf

0002 構(gòu)建shell測(cè)試

mvn clean package -Dmaven.test.skip=true
ls
ls target
1634721059090.png

005 拷貝構(gòu)建文件到遠(yuǎn)程Web服務(wù)器

0001 清理tomcat

[root@localhost webapps]# tar -xzvf apache-tomcat-8.5.59.tar.gz 
[root@localhost webapps]# mv apache-tomcat-8.5.59 /usr/local/tomcat
[root@localhost webapps]# cd /usr/local/tomcat/
[root@localhost webapps]# cd webapps/
[root@localhost webapps]# rm -rf *

0002 修改SSH Servers的遠(yuǎn)程目錄

1634722367970.png

0003 構(gòu)建Send files

target/*.war
target/
usr/local/tomcat/webapps
ls /usr/local/tomcat/webapps
1634722568616.png
1634722601754.png

0004 檢查結(jié)果

[root@bogon java-demo]# cd /usr/local/tomcat/webapps/
[root@bogon webapps]# ls
ly-simple-tomcat-0.0.1-SNAPSHOT.war

006 部署程序

# 備份已部署的程序
tomcat=/usr/local/tomcat
cd $tomcat/webapps
mv ROOT.war /data/backup/$(date +"%F_%T")_ROOT.war
# 部署新程序并重啟Tomcat
mv ly-simple-tomcat-0.0.1-SNAPSHOT.war  ROOT.war
pid=$(ps -ef |grep tomcat |egrep -v 'grep' |awk '{print $2}')
[ -n "$pid" ] && kill -9 $pid
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
/bin/bash /usr/local/tomcat/bin/startup.sh
1634734813186.png

集成Ansible,實(shí)現(xiàn)發(fā)布多臺(tái)Web服務(wù)器

發(fā)布框架

1634765250764.png

安裝ansible插件

ansible

ansible服務(wù)器準(zhǔn)備

ansible配置文件

[root@bogon ~]# vi /etc/ansible/hosts  
[web1]
192.168.153.17
192.168.153.18

playbook.yml

- hosts: webservers
  tasks:
  - name: 查看主機(jī)內(nèi)存
    shell: free -m
    register: result
  - debug: msg={{result.stdout_lines}}  

ansible-playbook運(yùn)行測(cè)試

[root@bogon ~]# ansible-playbook playbook.yml -uroot -k
SSH password:root
TASK [Gathering Facts] 
ok: [192.168.153.18]
ok: [192.168.153.17]
TASK [查看主機(jī)內(nèi)存] 
changed: [192.168.153.18]
changed: [192.168.153.17]
TASK [debug] 
ok: [192.168.153.17] => {
    "msg": [
        "              total        used        free      shared  buff/cache   available", 
        "Mem:           3773         417        2893          11         462        3063", 
        "Swap:          3999           0        3999"
    ]
}
ok: [192.168.153.18] => {
    "msg": [
        "              total        used        free      shared  buff/cache   available", 
        "Mem:           3773        2559         150          22        1063         832", 
        "Swap:          3999           0        3999"
    ]
}

ansible插件配置

1634768016393.png
1634768054478.png

Credentials

#確保19能夠正確連接到17和18
[root@localhost .ssh]# ssh-copy-id root@192.168.153.17
[root@localhost .ssh]# ssh-copy-id root@192.168.153.18

ansible插件的構(gòu)建運(yùn)行

1634768459419.png

ansbile遠(yuǎn)程發(fā)布

配置文件

# vi /opt/jenkins/playbook.yaml
- hosts: "{{ env }}"
  gather_facts: no
  tasks:
  - name: 推送部署包到遠(yuǎn)程服務(wù)器
    copy: src="{{ item }}" dest=/tmp/ROOT.war
    with_fileglob:
      - "/opt/jenkins_home/workspace/java-demo/target/*.war"
  - name: 部署新程序并重啟Tomcat
    shell: |
      tomcat=/usr/local/tomcat
      cd $tomcat/webapps
      mv *.war /data/backup/$(date +"%F_%T")_ROOT.war
      mv /tmp/*.war $tomcat/webapps/ROOT.war
      pid=$(ps -ef |grep tomcat |egrep -v 'grep' |awk '{print $2}')
      [ -n "$pid" ] && kill -9 $pid
      export JAVA_HOME=/usr/local/jdk
      nohup /usr/local/tomcat/bin/startup.sh

設(shè)置可選擇的環(huán)境變量

1634771383041.png

設(shè)置環(huán)境變量對(duì)應(yīng)的值

1634771619665.png
1634771648104.png

項(xiàng)目構(gòu)建

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

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

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