随着springboot+springcloud(dubbo)越来越多人使用,流行的微服务的概念越来越深入人心。分布式部署越来越复杂,给手动发布带来很大工作量。为了方便前期测试和后期线上部署更新,可使用Jenkins作为持续集成工具。

  mac下开发推荐使用homebrew管理软件包,使用方法可查考之前homebrew的安装方法。该步骤下默认maven和git都已安装好。

  1. 下载jenkins

  mac下:推荐使用命令brew install jenkins,或者直接到jenkins官网下载

brew install jenkins

  linux下:

 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
sudo service jenkins start //启动jenkins服务

  2. mac下载完后,进入jenkins/libexec目录下可以看到jenkins.war文件,我的路径是/usr/local/homebrew/Cellar/jenkins/2.141/libexec。直接调用 java -jar jenkins.war也能直接运行默认端口好像也是8080。

java -jar jenkins.war --httpPort=8080

  3. 访问localhost:8080,即可打开管理页面,首次访问需找到initialAdminPassword中的密码填入即可。

  4. 初始化点击intsall suggested plugins安装默认的插件

  5. 创建用户,配置git、maven、jdk等插件信息

  

   1)maven配置

    

  

  2)jdk配置

  

  6. 创建任务,从git里拉取文件

  

  7. 设置构建期间maven命令,可指定多个命令。

  

  8. 编写shell命令,启动jar程序(war文件也是同理)。相关命令一并提供,可按需修改。

  

  stop.sh

#!/bin/bash

PID=$(ps -ef | grep system.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo Application is already stopped
else
echo kill $PID
kill $PID
fi

  replace.sh

#!/bin/bash

# 先判断文件是否存在,如果存在,则备份
file="/usr/local/auto_programs/system/system.jar"
source_path="/Users/chenlili/.jenkins/workspace/happy-mall/system/target"
echo replace is beginning
if [ -f "$file" ]
then
echo backup is beginning
cp $file /usr/local/auto_programs/system/backup/system-`date +%Y%m%d%H%M%S`.jar
fi
cp $source_path/system.jar $file

  start.sh

#!/bin/bash

JVM="-Xms100m -Xmx520m"
Log="/usr/local/auto_programs/system/logs/system-api.log"
output="/usr/local/auto_programs/system/logs/output" java $JVM -jar /usr/local/auto_programs/system/system.jar >$output 2>&1
tail -f $Log

  这里解释一下为何不在start.sh用nohup方式启动,因为痛过jenkins的shell命令启动此方法不生效。我没看过源码,但我猜测是jenkins的shell进程控制着start.sh的线程,当shell关闭后线程也会关闭。因为在jenkins的shell命令里设置nohup可保证start.sh进入后台执行。同时BUILD_ID=dontKillMe是设置返回值通知jenkins命令已执行,不然jenkins会一直空转不能正常结束任务。

  1)假如大家要分布式部署的话,可通过ssh的方式无密钥访问.

  提供一种简单的方式:jenkins的maven编译完成->执行shell命令->shell里将各个jar包分配到相应的机器上->在执行想要的启动命令。

  2)假如工程项目的根目录下有多个工程,可通过jenkins配置多个任务,在maven里配置编译需要的工程。

  3)jenkins也支持docker

mac下git+maven+jenkins自动打包发布的更多相关文章

  1. Mac下Unity使用Jenkins自动化打包

    重要的事情说三遍:不要使用jenkins dmg安装包直接安装,用brew安装  PS:会有权限问题 重要的事情说三遍:不要使用jenkins dmg安装包直接安装,用brew安装 重要的事情说三遍: ...

  2. 小伙伴想学Jenkins自动构建发布项目,我:安排上了!!

    写在前面 趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪.有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家.这不,就有小伙伴 ...

  3. 基于jenkins自动打包并部署Tomcat环境

    传统网站部署的流程 在运维过程中,网站部署是运维的工作之一.传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确 ...

  4. Jenkins自动打包配置

    当时也是花费了不少时间来配置Jenkins自动打包的问题,觉得还是需要记录一下. 1.安装Jenkins,这个很简单,不需要多说. 2.下载Git Plugin,Gradle Plugin,Andro ...

  5. Android Jenkins自动打包纪录

    关于Jenkins自动打包Android的apk包,网上官方的太多,这里简单纪录一下博主的经历和打包的参数纪录 (本篇文章需要对Jenkins有最基本的基础了解) 博主所在公司曾负责app测试过程中发 ...

  6. 发布nuget包的正确姿势---cicd自动打包发布nuget包

    最轻便的发布nuget包方式,方便cicd自动打包发布nuget包 首先新建项目 项目名随便取,这里就叫它GuiH.ClassLibrary 默认即可,需要改目标版本时,等创建好再改 项目创建好了 随 ...

  7. Mac下配置Maven环境变量

    Mac下配置Maven环境变量 1.先到Apache官网下载maven压缩包.下载地址:http://maven.apache.org/download.cgi 2.Maven是用Java开发的,所以 ...

  8. Mac下git通过SSH进行免密码安全连接github

    Git——The stupid content tracker(傻瓜内容跟踪器) Git是Linux的缔造者Linus Torvalds为了帮助管理Linux内核源码而开发的一款免费.开源的分布式版本 ...

  9. Mac下Git的基础操作

    目前最火的版本控制软件是Git了吧,今天简单梳理一下Mac下Git的基础操作~~ 一.什么是Git Git是一个分布式代码管理工具,用于敏捷的处理或大或小的项目,类似的工具还有svn. 基于Git的快 ...

随机推荐

  1. 空洞卷积(dilated Convolution) 与感受野(Receptive Field)

    一.空洞卷积 空洞卷积是是为了解决基于FCN思想的语义分割中,输出图像的size要求和输入图像的size一致而需要upsample,但由于FCN中使用pooling操作来增大感受野同时降低分辨率,导致 ...

  2. mysql命令补全工具

    需要在linux中下载mysql插件. 安装mysql插件 yum -y install epel-release python-pip python-devel pip install mycli ...

  3. 六、springboot集成Swagger2

    1.Swagger简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法 ...

  4. sqlserver中查询存储过程中的字符串

    select name from sysobjects o, syscomments s where o.id = s.id and text like '%querytext%' and o.xty ...

  5. DEDECMS去除后门隐患和漏洞以及冗余代码的方法

    链接:http://jingyan.baidu.com/article/4d58d541195bdb9dd4e9c029.html 工具/原料 织梦网站管理系统 sublime编辑器 方法/步骤 第一 ...

  6. wordpress 常用函数-wpdb类

    与数据库建立接口 WordPress为用户提供了一系列用于数据库操作的函数类——wpdb.Wpdb类建立在Justin Vincent编写并维护的ezSQL类的基础上. 使用须知 不可直接调用wpdb ...

  7. Spark介绍及安装部署

    一.Spark介绍 1.1 Apache Spark Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架(没有数据存储).最初在2009年由加州大学伯克利分校的AMPLab开 ...

  8. 12 打印1到最大的n位数

    输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999.由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 cha ...

  9. day6 xml文件格式的处理

        XML处理模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公 ...

  10. Hive分区和桶的概念

    Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 S ...