jenkins自动化发布

发布Java网站项目

发布框架

1634711617448.png

大致步骤

001 分布式构建

步骤详见:【分布式构建(Master/Slave)】
1634712393035.png

002 Git参数化

0001 设置分支

1634712872062.png

0002 设置发布节点(17服务器)

1634712932678.png

0003 新建项目

1634713601564.png
1634713757320.png

0004 推送现有文件夹到新建项目

#把18服务器的项目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的权限至少是Maintainer

003 配置git地址

1634717804581.png

0001 做一个测试

1634718309331.png
#17的服务器,即slave构建
[root@localhost jenkins_home]# cd  /opt/jenkins_home/workspace/
[root@localhost workspace]# ls
java-demo  

004 代码编译构建

0001 修改阿里云仓库

#网址
https://developer.aliyun.com/mvn/guide
#阿里云仓库
<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
#修改setting
/usr/local/maven/conf

0002 构建shell测试

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

005 拷贝构建文件到远程Web服务器

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的远程目录

1634722367970.png

0003 构建Send files

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

0004 检查结果

[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,实现发布多台Web服务器

发布框架

1634765250764.png

安装ansible插件

ansible

ansible服务器准备

ansible配置文件

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

playbook.yml

- hosts: webservers
  tasks:
  - name: 查看主机内存
    shell: free -m
    register: result
  - debug: msg={{result.stdout_lines}}  

ansible-playbook运行测试

[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 [查看主机内存] 
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插件的构建运行

1634768459419.png

ansbile远程发布

配置文件

# vi /opt/jenkins/playbook.yaml
- hosts: "{{ env }}"
  gather_facts: no
  tasks:
  - name: 推送部署包到远程服务器
    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

设置可选择的环境变量

1634771383041.png

设置环境变量对应的值

1634771619665.png
1634771648104.png

项目构建

1634887912031.png
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容