我的编程空间,编程开发者的网络收藏夹
学习永远不晚

jenkins发布Spring Cloud(单机版)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

jenkins发布Spring Cloud(单机版)

有一台测试服务器,需要部署Spring Cloud。通过Jenkins来发布!

 

环境说明

1.png

 

gitlab版本:GitLab 社区版 10.5.1 

jenkins版本:2.219

测试服务器:操作系统为centos7.6

 

项目说明

微服务统一在一个git项目里面,项目的大致结构如下:

./
├── auth-server
│   ├── pom.xml
│   └── class="lazy" data-src
├── common
│   ├── pom.xml
│   └── class="lazy" data-src
├── config-server
│   ├── pom.xml
│   └── class="lazy" data-src
├── eureka-server
│   ├── pom.xml
│   └── class="lazy" data-src
├── gateway
│   ├── pom.xml
│   └── class="lazy" data-src
├── pom.xml
└── service-user
    ├── pom.xml
    └── class="lazy" data-src

主要有5个微服务器,分别是eureka,config,auth,user,gateway

 

增加分组

修改文件/etc/ansible/hosts,增加一个分组

[test_java]
192.168.28.229 ansible_ssh_port=22

ansible playbook

登录到jenkins服务器,创建目录

mkdir -p /opt/ansible/test

 

发布模板

vi /opt/ansible/test/deploy_standard_template.yml

内容如下:

---
 - hosts: "{{ HOSTS }}"
   remote_user: root
   become: yes
   become_method: sudo
   # 需要传入变量HOSTS,ENV,PROJECT_NAME,PREFIX,PORT
   # 分别表示主机,环境,项目名,路径前缀(拼接jenkins jar包路径),端口。
   # 声明变量
   vars:
     # 远程项目基础目录
     BASE_DIR: "/data/code"
     # 远程项目目录名
     PROJECT_DIR: "{{ ENV }}_{{ PROJECT_NAME }}_{{ PORT }}"
     # 备份目录
     BAK_DIR: "/data/website_backup"
     # 完整的jenkins jar包路径
     JENKINS_JAR: "/data/jenkins_data/workspace/{{ JOB_NAME }}/{{ PREFIX }}/target/{{ PROJECT_NAME }}.jar"
   tasks:
    #删除原来的包
     - name: move old package
       file: path={{ BASE_DIR }}/{{ PROJECT_DIR }}/{{ PROJECT_NAME }}.jar state=absent
    #同步jar包到目标服务器
     - name: synchronize package to {{ PROJECT_NAME }}
       synchronize:
         class="lazy" data-src: "{{ JENKINS_JAR }}"
         dest: "{{ BASE_DIR }}/{{ PROJECT_DIR }}/"
    #修改包的属性
     - name:  modify package
       file:  path="{{ BASE_DIR }}/{{ PROJECT_DIR }}/{{ PROJECT_NAME }}.jar" owner=root group=root
    # 备份当前的包
     - name: backup jar
       shell: "mkdir -p {{ BAK_DIR }}/{{ PROJECT_DIR }}_rollback/{{ BUILD_NUMBER }}/;cp -a {{ BASE_DIR }}/{{ PROJECT_DIR }}/{{ PROJECT_NAME }}.jar {{ BAK_DIR }}/{{ PROJECT_DIR }}_rollback/{{ BUILD_NUMBER }}/;chown -R root:root {{ BAK_DIR }}/{{ PROJECT_DIR }}_rollback"
    #启动server
     - name: start
       shell: "/opt/script/{{ PROJECT_DIR }} restart"
     - name: view port,Wait for 90 seconds
       shell: "sleep 90;lsof -t -i:{{ PORT }}"

 

回滚模板

vi /opt/ansible/test/rollback_standard_template.yml

内容如下:

---
 - hosts: "{{ HOSTS }}"
   remote_user: root
   become: yes
   become_method: sudo
   # 需要传入变量HOSTS,ENV,PROJECT_NAME,PORT,BUILD_ID
   # 分别表示主机,环境,项目名,端口,回滚的构建ID
   # 声明变量
   vars:
     # 远程项目基础目录
     BASE_DIR: "/data/code"
     # 远程项目目录名
     PROJECT_DIR: "{{ ENV }}_{{ PROJECT_NAME }}_{{ PORT }}"
     # 备份目录
     BAK_DIR: "/data/website_backup"
   tasks:
    # 还原指定的包
     - name: reduction package
       shell: "\\cp -a {{ BAK_DIR }}/{{ PROJECT_DIR }}_rollback/{{ BUILD_ID }}/{{ PROJECT_NAME }}.jar {{ BASE_DIR }}/{{ PROJECT_DIR }}/{{ PROJECT_NAME }}.jar"
    #启动server
     - name: start
       shell: "/opt/script/{{ PROJECT_DIR }} restart"
     - name: view port,Wait for 80 seconds
       shell: "sleep 80;lsof -t -i:{{ PORT }}"

 

jdk配置

登录测试服务器,创建代码目录

mkdir -p /data/code

安装rsync,用于jenkins同步代码

yum install -y rsync

安装jdk,这里就不做描述了。请参考链接:

https://www.cnblogs.com/xiao987334176/p/11678894.html

 

java启动脚本

创建脚本目录

mkdir /opt/script

eureka启动脚本

vi /opt/script/test_eureka-server_8761

内容如下

#!/bin/bash
# auditd        Start jar package
# chkconfig: 2345 14 87
# description: This is admin project
#define var

export JAVA_BIN=/data/jdk1.8.0_211/
export JAR_NAME=eureka-server.jar
export PROJECT_SERVICE=eureka-server
export ENV=test
export XMS=512m
export XMX=512m
export PORT=8761
export PROJECT_HOME=/data/code/${ENV}_${PROJECT_SERVICE}_${PORT}

. /etc/init.d/functions 
export START="nohup ${JAVA_BIN}bin/java -Xms${XMS} -Xmx${XMX} -XX:MetaspaceSize=50M -XX:MaxMetaspaceSize=256m -jar ${PROJECT_HOME}/${JAR_NAME} &"

#服务脚本
start(){
    echo "${PROJECT_SERVICE} starting....."
    source /etc/profile && cd $PROJECT_HOME && eval $START 
    if [ $? -eq 0 ];then
            action "$PROJECT_SERVICE is starting" /bin/true
    else
            action "$PROJECT_SERVICE is starting" /bin/false
    fi
}
stop(){
    for i in $(ps -aux|grep ${JAR_NAME}|grep -v grep|awk '{print $2}');do
            kill -9 $i;
    done
    if [ $? -eq 0 ];then
        action "$PROJECT_SERVICE is stoping" /bin/true
    else
        action "$PROJECT_SERVICE is stoping" /bin/false
    fi 
}
status(){
    if [ `ss -tunlp|grep ${PORT}|awk '{print $5}'|cut -d: -f2` = ${PORT} ];then
            echo "${PROJECT_SERVICE} is running....."
    else
            echo "${PROJECT_SERVICE} is stopping....."
    fi
}
case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    stop
    start
    ;;
status)
    status
    ;;
*)
   echo "$0 <start|stop|restart>"
esac

添加执行权限

chmod 755 /opt/script/test_eureka-server_8761

 

其它4个微服务脚本也是同样的,注意修改项目名和端口号。

 

确保jenkins已经安装了插件:Git Parameter

新建job

名为:test_eureka-server,选择自由风格的。

1.png

 

 参数化构建

1.png

 

 指定分支

1.png

 

 build参数

1.png

构建后执行shell脚本

1.png

 

 

 完整内容如下:

case $Status  in
  Deploy)
    echo "Status:$Status"
    ansible-playbook -v /opt/ansible/test/deploy_standard_template.yml -e "HOSTS=test_java JOB_NAME=${JOB_NAME} BUILD_NUMBER=${BUILD_NUMBER} ENV=test PROJECT_NAME=eureka-server PREFIX=eureka-server PORT=8761"
    echo "Completing!"
    ;;
  Rollback)
    echo "Status:$Status"
    echo "BUILD_ID:$BUILD_ID"
    ansible-playbook -v /opt/ansible/test/rollback_standard_template.yml -e "HOSTS=test_java ENV=test PROJECT_NAME=eureka-server PORT=8761 BUILD_ID=${BUILD_ID}"
    echo "Completing!"
    ;;
  *)
  exit
    ;;
esac

 

构建后操作

1.png

 

 

点击build

1.png

 

 

直接点开始构建,build_id不需要输入

1.png

 

 

先查看左侧的build_id

1.png

 

 

如果要回到上一个版本,选择rollback,输入数字1

1.png

 

 点击开始构建,就可以了!


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

jenkins发布Spring Cloud(单机版)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

jenkins发布Spring Cloud(单机版)

有一台测试服务器,需要部署Spring Cloud。通过Jenkins来发布!环境说明gitlab版本:GitLab 社区版 10.5.1jenkins版本:2.219测试服务器:操作系统为centos7.6项目说明微服务统一在一个git项
2023-01-31

docker封装Spring Cloud(单机版)

微服务统一在一个git项目里面,项目的大致结构如下:./├──auth-server│├──pom.xml│└──src├──common│├──pom.xml│└──src├──config-server│├──pom.xml│└──sr
2023-01-31

python 模拟Spring Cloud+k8s发布

在上一篇文章,链接如下:https://www.cnblogs.com/xiao987334176/p/12260474.html在一台服务器上面,使用6个django项目,演示了一下Spring Cloud下面将详细介绍,如何使用k8s发
2023-01-31

java版电子商务spring cloud分布式微服务b2b2c-Spring Cloud Task

Spring Cloud Task的目标是为Spring Boot应用程序提供创建短运行期微服务的功能。在Spring Cloud Task中,我们可以灵活地动态运行任何任务,按需分配资源并在任务完成后检索结果。Tasks是Spring C
2023-06-05

win10手机正式版什么时候发布 win10手机正式版发布时间

微软Build2015大会中关于win10正式版、win10手机python正式版发布时间令人关注。今天小编就为大家分享win10手机正式版发布时间给大家,一起来看看吧! TheVerge高级编辑Tom Warrephpn从@
2023-06-14

如何安装Hadoop单机版和全分布式

这篇文章主要介绍“如何安装Hadoop单机版和全分布式”,在日常操作中,相信很多人在如何安装Hadoop单机版和全分布式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何安装Hadoop单机版和全分布式”的疑
2023-06-09

Hadoop单机版和全分布式(集群)安装

Hadoop,分布式的大数据存储和计算, 免费开源!有Linux基础的同学安装起来比较顺风顺水,写几个配置文件就可以启动了,本人菜鸟,所以写的比较详细。为了方便,本人使用三台的虚拟机系统是Ubuntu-12。设置虚拟机的网络连接使用桥接方式
2022-06-04

SpringCloud分布式微服务云架构 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)

Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。本文要讲述的是用Spring Cloud Bus实现通知微服务架构的配置文件的更改。一、准备工作本文还
2023-06-05

Windows 10 10136手机预览版发布 图赏

昨天Windows Insider成员在社交网络上向项目负责人Gabriel Aul提问,问及新的Windows 10 Mo编程客栈bile在近期内发布还是依然需要时间修复BUG。更多的用户倾向于前者,且随后Aul确认公司将尽力促进新版本的
2023-06-16

JavaScript怎么实现简单版的留言发布与删除

本篇内容介绍了“JavaScript怎么实现简单版的留言发布与删除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先用户在输入框中输入内容,
2023-06-29

Spring事件发布与监听机制的用法示例

小编给大家分享一下Spring事件发布与监听机制的用法示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、ApplicationContext 事件机制Appl
2023-06-20

win10手机预览版10080什么时候发布推送

之前为大家分享了win10手机预览版10072(10.0.12555.74)体验全过程 ,距离上一次微软推送win10 Mobile系统预览版推送已经很久。那么微软什么时候发布推送win10手机预览版10080呢?win10手机预览pyth
2023-06-15

Windows 10手机版什么时候发布? 预计九月底

Windows 10桌面版即将在7月29日发售,但Windows Phone粉丝还要继续等待,因为微软还没有公布Windows 10手机版发售日期。幸运的是,微软提交给合作伙伴的一份幻灯片今天曝光,微软在其中一张幻灯片当中表编程示,Wind
2023-06-16

win10手机版10052更新了什么?win10手机版10052下载发布以及更新汇总

win10手机版10052下载发布啦!javascriptwin10手机版10android052在10051的基础上做出了哪些更新以及修复呢?想了解具体情况的朋友一起跟小编去下文看看吧。微软开始加快Windows 10 for phone
2023-06-14

win10手机预览版什么时候发布 可以装exe吗

win10手机js预览版将在下周进行推送,具体推送时间尚未知,小米4支持win10系统的消息一发布,想必不少用户对于是否支持exe而感兴趣吧?小编预测,到时候在手机上玩电脑游戏和运行电脑版QQ应该不再是梦哦! 据悉,在本次WinHEC大会上
2023-06-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录