[置顶] Jenkins详细安装与构建部署使用教程

          Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。

本文使用的Linux:Ubuntu

其中JDK、Tomcat、SVN服务器请看这里Ubuntu安装配置JDK、Tomcat、SVN服务器

一、安装Jenkins

本文直接使用war包安装

下载地址:https://jenkins-ci.org/content/thank-you-downloading-windows-installer/


war包有两种安装方法

方法一

下载jenkins.war, 拷贝到D:\Java\Tool\jenkins()下,然后运行java -jar jenkins.war. (注意需要先安装JDK,然后设置JAVA_HOME环境变量且将%JAVA_HOME%\bin加入到PATH环境变量中)

运行如下:

访问http://localhost:8080 , jenkins的主界面如下:


方法二

把Jenkins 1.409.1版解压,把得到的war包直接扔到tomcat下,启动tomcat,Jenkins就安装完毕,访问http://localhost:8080 


二、构建一个Maven项目

1、新建一个job


2、输入名称和项目类型


3、设置编译的版本号等信息

4、设置svn库地址:

输入项目托管的svn的地址,如果有出现要输入账号和密码的地方,输入即可。


如果有出现如下说明用户或密码不对:

点击进去重新设置用户和密码

5、配置jdk和maven

第一次打开出现如下,点击进去。要求提示设置JDK和Maven


点击系统管理-》系统设置,找到JDK和Maven的设置位置

选择本电脑的:


9、到这里已经可以构造这个项目了。

点击构建


构建输出的信息:


构建成功输出如下 :


10、验证

这时它已经自动把这个项目打包了一个war包,默认打包到了C:\Users\linbingwen\.jenkins\workspace\JavaWeb\JavaWeb\target



或者点击如下:



三、自动远程部署到tomcat

接下来要完成自动构建成war包后,将些war包上传到远程linux的tomcat的webapps目录,更新项目的war包,并重启tomcat.

1、安装插件

系统管理-》管理插件,在可选插件里找到下面这个,然后点击直接安装命令,安装成功后要重启jenkins


t笔者在安装插件时报错如下:



这应该是天朝的墙所导致的,所以笔者就使用了手动安装的方式。

解决方法:

手动安装

到https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin,下载hpi到本地电脑到


在系统管理--管理插件--高级--浏览-上传插件即可


然后它自动上传并安装:

红色的是笔者在线安装不成功的,蓝色的是笔者安装成功的了,之后重启jenkis即可。


2、配置ssh内容:
在系统管理-》系统设置里
找到Publish over SSH
然后输入:

3、配置Post Steps
这里还是接着上面的JavaWeb项目,这个配置得安装了上面的插件后才会显示!


其中,
Transfer SetSource files:表示要上传的本地的war包及路径,可到工作空间去看

Remove prefix:表示要上传时要去除的文件夹,即只上传war包

remote driectory:即表示执行时的路径,相当于把war包上传到这里了

exec commad:要执行的命令

要执行的脚本的内容:
#!/bin/sh
#defined 
TOMCAT_HOME="/usr/java/tomcat/apache-tomcat-7.0.67/"
ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'`
echo $ID 
echo "kill tomcat"
kill -9 $ID
echo "remover war file"
cd "$TOMCAT_HOME"/webapps
rm -rf JavaWeb-0.0.1-SNAPSHOT
rm -rf JavaWeb-0.0.1-SNAPSHOT.war
echo "copy war to webapp"
cd /home/lin
cp JavaWeb-0.0.1-SNAPSHOT.war "$TOMCAT_HOME"/webapps
cd "$TOMCAT_HOME"/bin
echo "start tomcat"
./startup.sh
步骤:
先停掉tomcat
删除webapp下对应的war包
复制war到webapps
重启tomcat


4、构建部署
点击项目的构建按钮,最终出现如下:


在linux上打开浏览器,输入http://localhost:8080/JavaWeb-0.0.1-SNAPSHOT/


注意:这里配置的ssh用户:lin要有root的权限,要不可以会报错没有权限执行kill 或rm 命令

本文使用的Linux:Ubuntu14.04

其中JDK、Tomcat、SVN服务器请看这里Ubuntu安装配置JDK、Tomcat、SVN服务器



本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
前言 在HDFS中,所有的数据都是存在各个DataNode上的.而这些DataNode上的数据都是存放于节点机器上的各个目录中的,而一般每个目录我们会对应到1个独立的盘,以便我们把机器的存储空间基本用上.这么多的节点,这么多块盘,HDFS在进行写操作时如何进行有效的磁盘选择呢,选择不当必然造成写性能下降,从而影响集群整体的性能.本文来讨论一下目前HDFS中存在的几个磁盘选择策略的特点和不足,然后针对其不足,自定义1个新的磁盘选择策略. HDFS现有磁盘选择策略 上文前言中提到,随着节点数的扩增,磁盘数也会

实践 ArcGIS Web 3D - 2016-01-18 17:01:25

ArcGIS 产品家族的 Web 3D 功能众多用户期待已久,从 ArcGIS 10.3.1 版本开始,Esri 放了个大招,千呼万唤始出来的 Web 3D 功能,终于不再犹抱琵琶半遮面了。 那到底如何将创建和发布3D场景呢? 下面就把今天的测试过程记录下。 测试环境 硬件 处理器:Intel Core i7 4710MQ @ 2.50GHz 内存:16G 显卡:NVIDIA GeForce GT 730M OS Windows 10 Pro 软件 ArcGIS Pro 1.1.1 (必要) ArcGIS

VMware Ubuntu安装详细过程 - 2016-01-17 17:01:40

不是每一个程序员都必须玩过linux,只是博主觉得现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣,但是很多生产上的框架和工具都是安装在服务器上的,而且有不少大公司都要求熟悉在linux上开发,因此从个人职业发展有必要去多了解一下linux。 (博主网上查了一下,现在大部分服务器安装的系统主要有:ubuntu server、centos、suse linux enterprise, redhat linux等) 于是今天博主就在虚拟机上安装了Ubuntu,并分享整
CentOS 7防火墙服务FirewallD指南 作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页: http://blog.csdn.net/chszs 防火墙是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙通常工作在网络层,也即IPv4或IPv6的IP包上。 是否允许包通过防火墙,取决于防火墙配置的规则。这些规则既可以是内建的,也可以是用户自定义的。每一个包要进出防火墙,均需要满足防火墙配置的规则。 每一
与网络数据包的发送不同,网络收包是异步的的,因为你不确定谁会在什么时候突然发一个网络包给你,因此这个网络收包逻辑其实包含两件事: 1.数据包到来后的通知 2.收到通知并从数据包中获取数据 这两件事发生在协议栈的两端,即网卡/协议栈边界以及协议栈/应用边界: 网卡 /协议栈边界: 网卡通知数据包到来,中断协议栈收包; 协议栈栈/应用边界: 协议栈将数据包填充socket队列,通知应用程序有数据可读,应用程序负责接收数据。 本文就来介绍一下关于这两个边界的这两件事是怎么一个细节,关乎网卡中断,NAPI,网卡po
和前面文章的第一部分一样,这些文字是为了帮别人或者自己理清思路的,而不是所谓的源码分析,想分析源码的,还是直接debug源码最好,看任何文档以及书都是下策。因此这类帮人理清思路的文章尽可能的记成流水的方式,尽可能的简单明了。 Linux 2.6+内核的wakeup callback机制 Linux内核通过睡眠队列来组织所有等待某个事件的task,而wakeup机制则可以异步唤醒整个睡眠队列上的task,每一个睡眠队列上的节点都拥有一个callback,wakeup逻辑在唤醒睡眠队列时,会遍历该队列链表上的每
本文题目有点大,但其实我只想描述一些我个人一直比较关注的特性,并且不会太详细,跟往常一样,主要是帮忙理清思路的,不会分析源码。这主要是为了哪一天突然忘了的时候,一目十行扫一眼就能记忆当时的理解,不然写的太细节了,自己都看不懂了。 Lockless TCP listener 先从TCP的syncookie说起,如果都能使用syncookie机制该有多好,但是不能,因为它会丢失很多选项协商信息,这些信息对TCP的性能至关重要。TCP的syncookie主要是为了防止半连接的syn flood攻击,超级多的节点发

干货,pomelo路由解读 - 2016-01-16 14:01:18

pomelo的初衷是后台服务器无状态,因此它可以任意使用配置规则来扩展其后台服务器以承载更多的游戏玩家,但实际上还是要面临A玩家在cs1前台并在bk1后台的问题。 假如玩家A被分配在了空闲的cs1前台,并且cs1前台路由的是比较合适的bk1后台 看图:由于还有bk2后台,因为cs1需要知道如何来选择此玩家的请求被正确处理。因为逻辑部分最终是落在bk1上的,因此我们认为玩家A在bk1是 有状态 的。 pomelo的解决方法是实现自己的路由算法 这个路由算法来保证玩家A的请求被正确的处理到了正确的bk上 如果
前面的一片文章我们已经讲过使用信号量解决生产者消费者问题,那么什么情况下我们需要 引入条件变量 呢? 这里借用  http://www.cnblogs.com/ngnetboy/p/3521547.html 的解释: 假设有共享的资源 sum, 与之相关联的 mutex  是 lock_s. 假设每个线程对 sum 的操作很简单的 , 与 sum 的状态无关 , 比如只是 sum++. 那么只用 mutex 足够了 . 程序员只要确保每个线程操作前 , 取得 lock, 然后 sum++, 再 unloc

给虚幻4添加内存跟踪功能 - 2016-01-16 14:01:31

本文章由cartzhang编写,转载请注明出处。 所有权利保留。 文章链接: http://blog.csdn.net/cartzhang/article/details/50524317 作者:cartzhang 本篇译文同发与蛮牛译馆, 地址: http://www.manew.com/thread-46327-1-1.html?_dsign=ae91354a 从我上次谈论内存申请和跟踪已经有一段时间了。我得抽出时间来在虚幻4上实现跟踪,并且已经完成了。我假设你已经阅读过来之前的博客:“虚幻引擎4中内