随着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. 两个Bounding Box的IOU计算代码

    Bounding Box的数据结构为(xmin,ymin,xmax,ymax) 输入:box1,box2 输出:IOU值 import numpy as np def iou(box1,box2): ...

  2. 随机数生成 && 生成执行锁

    生成随机数列: openssl rand -base64 uuidgen echo $RANDOM | md5sum echo $RANDOM | sha256sum 随机小写10个字母 随机数: [ ...

  3. 二、springboot配置

    一.启动类 在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法: SpringApplication.run(SampleController.class, args) ...

  4. css文字环绕图片--遇到的问题及解决方法

    一.前言 需要实现一个文字环绕图片的效果,心想so easy嘛. 1)代码部分 <style> .img-left { border: 3px solid #005588; width:3 ...

  5. 读书笔记--C陷阱与缺陷(六)

    第六章 1.预处理器:预处理器先对代码进行必要的转换处理,简化编程者的工作. 它的重要原因有以下两点: a. 假如要将程序中出现的所有实例都加以修改,但希望只改动程序一处数值,重新编译实现. 预处理器 ...

  6. 使用html+css+js实现魔性的舞蹈

    使用html+css+js实现魔性的舞蹈,让我们燥起来!!! 效果图: 代码如下,复制代码即可使用: <!DOCTYPE html> <html > <head> ...

  7. CxGrid 表格列内容居中

    首先每一列 Cxgrid 都不知道要当成什么来出来,所以每一列都有个properties 让你来设置,告诉cxgrid 这列的内容是什么,然后根据你给出的内容 再来决定用什么居中方式: 就是说 官方再 ...

  8. Kubernetes 部署kafka ACL(单机版)

    一.概述 在Kafka0.9版本之前,Kafka集群时没有安全机制的.Kafka Client应用可以通过连接Zookeeper地址,例如zk1:2181:zk2:2181,zk3:2181等.来获取 ...

  9. 20155225 实验一《Java开发环境的熟悉》实验报告

    20155225 实验一<Java开发环境的熟悉>实验报告 一.命令行下Java程序的开发 按照老师提供的步骤,运行程序如下: 二.IDEA下Java程序开发.调试 设置条件断点如下: 三 ...

  10. CVE-2010-0248

    [CNNVD]Microsoft Internet Explorer 多个远程代码执行漏洞(CNNVD-201001-237) Microsoft Internet Explorer 6, 6 SP1 ...