最近领导要求上海本地的项目需要使用进jenkins实现自动化部署,以便可以直接将项目移交给运维的同学,减轻开发的工作量。记录下这次爬坑的过程。

一、前言

Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
上面是我从百科上down下来的,老实说没看懂,这是个什么玩意啊?其实以我现在的理解和应用,最多的便是部署了,其他功能待研究╮(╯_╰)╭
撸主目前在上海一个不知名国企打工,我们现在项目的发布流程是:
1、本地或打包服务器利用maven打成war包
2、远程或者SSH连上项目服务器
3、停掉tomcat,删除旧包和缓存,将新打的包放进去
4、重启tomcat。完成
看似步骤简单,其实占用了大量开发的的时间。
然后使用jenkins后:
1、点击立即构建,完成。
什么?就点击个按钮就完成了,没错,就是个按钮。其实在你点击按钮后jenkins已经帮你把上述该走的流程后台跑了一遍了,本次就介绍下怎么让它后台跑。

二、安装构建

本次介绍基于windows,可安装在开发电脑或者windows server服务器

1、下载jenkins

  jenkins提供多种安装方式
1.1 jenkins.msi安装 就像我们平时安装软件一样,点点点。下载地址:https://jenkins.io/download/ 
1.2 jenkins.war 包   既然是war包,不用说大家都知道怎么启动了,扔到tomcat就行了。下载地址:http://updates.jenkins-ci.org/download/war/

2、启动jenkins

我个人是比较推荐1.1的安装方式的,1.2我在使用的时候经常遇到内存溢出的问题,当然内存溢出是可以调整的,但是多出了多余的工作量不是嘛。
采用1.1的安装方式,安装完成后我们会在windows的服务里面看到jenkins服务的。如下图,启动关闭重启直接点服务就行了。

采用1.2的的方式下载war包的话,其实有两种启动方式。

第一种,放到tomcat容器,

第二种,cmd进入安装目录,java -jar jenkins.war

3、安装jenkins

安装方式1.1和1.2 的流程是一样的

jenkins默认8080端口,可以修改,方法百度。

进入http://localhost:8080/。红色字体路径有密码,将密码填上,然后下一步。

选择插件,建议选择官方建议插件,避免很多麻烦。

等待安装中ing......

安装好后看到下图,用户名密码登陆用的,全名是用来显示的。继续下一步。

因为我要部署的是maven项目,jenkins默认的插件中是没有maven的,首先需要安装下。

点击下图插件直接安装就行了,maven integration plugins

安装热部署插件Deploy to container Plugin

4、配置jenkins

我们需要配下maven的setting文件,jdk以及maven地址,setting文件一定要配,不要用它默认的,撸主因为这个没配,出问题纠结好久。

最后Apply然后Save就行了,记得别忘了应用保存,不然白配了。

接着我们来新建一个项目,先输入项目名,选择maven项目,OK

选择源码管理,因为我们是企业项目,不是开源,使用的SVN,选择Subversion配置SVN

URL是你SVN地址,Credentials是账户密码

然后到Pre Steps,这个东西是打包前需要什么操作,比如我们现在的项目需要拷贝log4j.xml文件等等,根据环境可以写windows或者Shell脚本

没有操作的话,就不用配了

Build编译了,指定pom位置,以及mvn命令,对了高级里面还可以配置workspace,不配默认在jenkins安装目录中

构建后操作,就是包打好了放在哪。选择下图

本次构建后操作,使用的是tomcat的热部署,热部署可以参考我之前的文章:Tomcat7的热部署

5、开始构建

讲了那么多,终于到了最后了,一个按钮的操作终于到了,返回jenkins首页就可以看到我们的项目了。

构建后点击左下角构建执行状态中可以看到我们的项目在构建中。点击项目名进入

选择Console就能看到我们构建过程中打印出来的日志或者错误信息了。

三、存在的问题

jenkins角色问题,既然是发布就涉及到生产环境,不能所有用户都有部署生产环境的权限吧,如果谁不小心点了下。那后果.....不敢相信。

tomcat热部署的问题, deploy几次之后出现内存上涨溢出,停止运行或者报错的问题,网上查了下是热部署本身的问题,正在寻求解决办法ing.....。

利用jenkins做项目的自动化部署的更多相关文章

  1. Jenkins+SVN+Maven+shell 自动化部署实践

      JAVA环境中利用Jenkins+svn+maven进行自动化部署实践   一. 前言2 1.介绍jenkins2 1.本地项目打包2 2.通过secureCRT工具,手动传输到服务器2 3.然后 ...

  2. 利用PowerShell+Jenkins,实现项目的自动化部署

    当项目越来越庞大,部署环境越来越多以后,就会越来越依赖于自动化.比如本人公司的项目,目前有6个web和4个windows service,同时本地有两套环境:开发自测试环境和QA测试环境.每次版本发布 ...

  3. 利用Jenkins实现JavaWeb项目的自动化部署

    修改代码,打包,上传,重启... 大把的时间花费在这些重复无味的工作上.笔者与当前主流的价值观保持一致:我们应该把时间花费在更有意义的事情上.我们可以尝试借助一些工具,让这些重复机械的工作交给计算机去 ...

  4. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

  5. 基于Jenkins,docker实现自动化部署(持续交互)

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  6. .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统

    .NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言     相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...

  7. 基于Jenkins,docker实现自动化部署(持续交互)【转】

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  8. 5分钟快速掌握Jenkins,项目一键自动部署

    5分钟快速掌握Jenkins,项目一键自动部署 目录 前言 Jenkins是什么? Jenkins环境安装搭建 Jenkins基本使用介绍 Jenkins快速构建项目,项目自动化部署 学习总结 前言 ...

  9. 使用Git实现Laravel项目的自动化部署

    简介 不知道大家一开始是怎么使用 git 进行开发的,反正我个人是先将代码提交到 github 仓库,然后用 SSH 登录到服务器,然后进行克隆或者版本更新.听起来就很麻烦,当然实际操作中也很麻烦,那 ...

随机推荐

  1. UNIX 系统概述

    UNIX体系结构(UNIX Architecture) 调用内核的接口叫做系统调用(system call,图1.1中的阴影部分),普通函数库是建立在系统调用接口的基础之上.应用(applicatio ...

  2. Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace 解决方法

    这个问题是在用到spring时,本地IDE里面跑的很正常,但是打包后在集群上运行时报错. 多方查找资料后确定了问题的根源,由于在依赖中调用了spring的许多包,会存在文件覆盖的情况. 具体是 这三个 ...

  3. Python 基础之基本数据类型

    首先,Python中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建.在Python中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象 ...

  4. 传感器系列之4.12GPS定位传感器

    4.12 GPS定位实验 一.实验目的 了解GPS的基本概念 了解NMEA-0183格式数据串的组成和关于GPS的常用语句 GPS的数据串解析 二.实验材料 具有串口通讯的电脑一台 ADS1.2开发环 ...

  5. Day1-用户输入及字符串格式化输入

    1.用户输入--input和getpass函数 2.字符串的格式化 ############################################# 一.用户输入--input()函数 #! ...

  6. 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  7. 重构了cxlt-vue2-toastr插件

    距离上篇文章已经过去一个多月了,期间有很多想法,但时间真不是想挤就能挤出来的.其实这段时间我就做了一件事,一个小程序的项目,已上线半月有余,也迭代了几个版本,现在还在不断完善. 先说点题外话,我们做了 ...

  8. 无声的吐槽csdn

    上次朋友聚会,说csdn挺好的,我琢磨着,那好我也去注册一个.经过n次的注册(用户名那边老是验证不过,不给中文开头,然后随便填了一个),终于搞定了! 我想,不错啊,做了这么多限制,挺安全的感觉.然后我 ...

  9. data.table包简介

    data.table包主要特色是:设置keys.快速分组和滚得时序的快速合并.data.table主要通过二元检索法大大提高数据操作的效率,同时它也兼容适用于data.frame的向量检索法. req ...

  10. React学习小结(三)

    一.React数据的传输 1.属性和状态是react中数据传递的载体 2.属性是声明以后不允许被修改的东西 3.属性只能在组件初始化的时候声明并传入组件内部,并且在组件内部通过this.props获取 ...