最近领导要求上海本地的项目需要使用进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. springboot(十一):Spring boot中mongodb的使用

    mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多.由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置 ...

  2. 单页应用跳转ui-view,$stateProvider,$urlRouterProvider

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta charset="UTF- ...

  3. 更快的理解js中循环嵌套

    [循环控制语句] break语句:终止本层循环,继续执行循环后面的语句:(当循环有多层时,break只会跳出一层循环) continue语句:跳过本次循环,继续执行下次循环: (对于for循环,con ...

  4. jQuery选择器的分类之过滤选择器

    jQuery选择器的分类之过滤选择器 上一篇文章为大家简单呢的介绍了jQuery选择器中的基本选择器,层级选择器,表单选择器,接下来就带大家了解一下过滤选择器... 过滤选择器都分为哪些??? 1.基 ...

  5. ANSJ中文分词使用方法

    一.前言 之前做solr索引的时候就使用了ANSJ进行中文分词,用着挺好,然而当时没有写博客记录的习惯.最近又尝试了好几种JAVA下的中文分词库,个人感觉还是ANSJ好用,在这里简单总结之. 二.什么 ...

  6. LeetCode---------Add Two Numbers 解法

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  7. python 列表、元组、字符串、字典、集合、return等梳理

    有必要对这些数据类型及操作做下梳理: 1.列表:增删改查 a.查找: >>> names=["zhang","wang","li&q ...

  8. C#操作CAD-初始化、引用dll

    操作cad等方式有很多,比如C,C++,vb.lisp(效率最高,但是语言结构性太差)和C#,因为我等个人习惯和方便等原因,在此讲解一下用C#操作流程,后续会更新操作图层.扩展数据.绘图等操作步骤.当 ...

  9. Webdriver+Java实现使用cookie跳过登录

    Webdriver+Java实现使用cookie跳过登录   Webdriver模拟登录过程中很有可能遇到验证码,最近认真学习了下如何使用cookie直接跳过登录过程. 一.cookie的定义 来源百 ...

  10. 【Python的迭代器,生成器】

    一.可迭代对象和迭代器 1.迭代的概念 上一次输出的结果为下一次输入的初始值,重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值 注:循环不是迭代 while True: ...