一、前言:Jenkins介绍

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成和持续部署变成可能。

本文演示样例是一个JavaWeb项目,环境如下:

服务器:CentOS 7.3.1611主机一台

代码管理:git

编译打包:maven

发布部署:tomcat7

本试验以下下载、解压、执行等操作均在主机/home/centos目录下进行

传统工作模式需要通过手动操作大概完成如下几个步骤:

1、拉取代码

2、编译打包

3、停止tomcat服务

4、将程序包上传至tomcat容器内

5、启动tomcat服务

使用Jenkins可以将上述步骤一键完成,再配合相应的触发器机制(扫描代码变动或强制定时任务),可以实现完全的无人干预、自动完成。它的内部工作步骤如下:

1、Jenkins的触发器扫描到代码仓库发生变化或者到了设定好的任务开始时间

2、Jenkins使用git到代码仓库拉取代码

3、Jenkins使用maven对拉取的代码进行编译、打包

4、Jenkins把打包好的war工程传输到指定tomcat的webapps目录下

5、Jenkins重启tomcat服务

二、准备工作

Git版本控制服务器:

本实验中所用的Git代码服务器已提前备好,直接使用

CentOS主机上安装(已存在可忽略):

1、JDK安装

本试验中Tomcat和Jenkins都需要依赖JDK,其中最新版的Jenkins需要JDK1.8版本,采用yum安装

yum install java-1.8.0-openjdk –y

安装完毕后执行java

-version确认一下,看到版本号表示成功

2、Tomcat安装

本试验中Tomcat用来部署JavaWeb项目,Jenkins插件目前只支持到Tomcat7版本

下载安装包:

wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz

地址如果失效,可去官网http://tomcat.apache.org/重新找一个链接地址

修改端口:

Tomcat默认端口是8080,本试验中主机该端口已被占用,修改为8082

解压安装包后到Tomcat目录里面conf目录下编辑server.xml文件,将下图位置的8080修改为新的端口号:

启停服务:

到tomcat目录里面bin目录下,执行./startup启动,访问一下,地址:

http://主机IP:8082。不能访问基本都是防火墙问题,能出现小猫界面就表示服务启动成功,要想停止服务可以执行./shutdown.sh ,也可以找到进程pid,执行kill -9 pid号。

解决Tomcat启动慢:

如果发现Tomcat启动特别慢,可以打开jdk安装路径下/jre/lib/security/java.security这个文件找到securerandom.source参数修改为

securerandom.source=file:/dev/./urandom

本试验中该文件路径为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/lib/security/java.security

3、Git安装

yum

-y installgit

安装完后执行git --version确认,看到版本号表示成功

4、Maven安装

yum-y install maven

安装完后执行mvn -v确认,看到版本号表示成功

三、安装Jenkins

下载程序包:

wget http://mirrors.jenkins.io/war/latest/jenkins.war

启动程序包:

下载的Jenkins程序war包可以用Tomcat发布,也可以直接执行启动,本试验中Tomcat服务用于发布JavaWeb项目,为避免混淆,采用直接执行启动。

启动命令

java -jarjenkins.war --httpPort=8081

如果不写端口号参数,默认启动端口是8080

初次启动控制台里会生成一个密码,对其进行复制

打开访问地址:http://主机IP:8081,出现如下页面

将刚才的密码进行粘贴,也可根据提示到主机上

cat /root/.jenkins/secrets/initialAdminPassword找到密码进行复制粘贴。来到如下页面

这步是让选择推荐安装还是自定义安装,之后可以随时更改,点第一个,知道用什么插件点第二个也可以这样装的包少一点。安装的插件都在/root/.jenkins/plugins/下面

直接选择continue as admin

开始使用,点击就会进来

重置admin密码:

以后访问时会需要账号密码,在“系统管理”-“管理用户”中对admin账户进行密码重置修改。

至此完成Jenkins安装以及初次登录。

此时Jenkins运行在CentOS当前页面进程里,如果关掉当前会话会导致Jenkins服务停止,可先将服务停掉,运行如下命令进行后台启动:

nohup java -jarjenkins.war --httpPort=8081 &

如要停止服务,可找到进程pid号,执行kill-9pid号

四、配置Jenkins

1、插件安装:

(1)发布容器插件

选择可选插件,过滤搜索Deploy toContainerPlugin插件(这个是支持将代码部署到tomcat容器的)

勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可。

(2)Maven工程插件

步骤同上,插件名为MavenIntegration plugin

2、系统配置

(1)JDK,别名是任意的,路径填写刚才yum安装的jdk位置

/usr/lib/jvm/java-1.8.0-openjdk

(2)Git,注意这里的git位置,是可执行文件的地址(类似于Java中bin下的java可执行文件位置),可通过git --exec-path命令查看路径,本试验yum安装的git可执行文件位置为/usr/libexec/git-core/git

(3)Maven,选择刚才yum安装的maven存放位置

/usr/share/maven

至此Jenkins的基本配置完成。

五、创建任务

1、新建任务

2、配置任务

(1)源码管理

源码管理选择Git,这个时候添加url之后,下边会报错,显示让去认证,认证即可(其他的安装中又遇到这个问题),如果认证失败,请下载认证Github Authentication plugin插件,这个在插件管理的可选插件中搜索安装

(2)构建触发器

此处默认为第一个选项,可以根据实际业务选择其他选项,

例如:

Build periodically:周期性触发执行

Poll SCM:周期性扫描代码仓库,源代码发生变化触发执行

配置内容可以点选后面的问号圆圈查看填写规则说明

此试验配置为:每五分钟执行一次,H/5 * * * *

(3)构建后操作

此配置是将编译后的文件**/target/intro.war(就是本试验的JavaWeb项目编译构建后生成的war包)部署到下边的远程Tomcat容器中;这里Containers的用户名和密码是Tomcat管理员的账户密码,Tomcat URL就是你需要进行部署的远程Tomcat服务器的ip和端口。

这里需要进行设置的是Tomcat的管理员信息,修改Tomcat容器下的conf文件夹下的tomcat-users.xml文件,在内添加下边的内容后重启Tomcat:

至此任务创建配置完成

六、查看任务

此时可以点击“立即构建”,也可以等待定时任务自动触发。

打开JavaWeb项目验证地址

http://主机ip:8082/intro

至此,使用Jenkins搭建的持续集成部署环境全部完成,项目人员现在只需要专注于程序开发,将完成编写和测试的代码提交至代码仓库,后续的编译、打包、上传、部署等工作全部由Jenkins根据事先的配置自动完成。

七、与华为软件开发云对比分析

1、软件易安装

Jenkins★★★☆

程序包下载后通过命令安装或者通过web容器发布,依赖于JDK,需要主机

华为软件开发云★★★★

云上服务,无需任何安装和依赖,即开即用,需要网络

2、工具集成度

Jenkins★★☆☆

依靠插件调用Git、Maven、Ant等工具,所用到的工具都需要本地安装

华为软件开发云★★★★

工具全部内置到了云端服务上,无需安装,直接使用

3、工具扩展

Jenkins★★★★

插件丰富,自由选择使用,对不同的软件环境均可很好的支持

华为软件开发云★★☆☆

所集成的工具种类和版本较为固定,不可自由选择

4、软件易使用

Jenkins★★★☆

操作界面友好,各个配置项均有图标进行说明和配置样例。

华为软件开发云★★★☆

产品上有大量的帮助文档、操作视频,配合在线客服,从不同角度提供技术支持

5、自动化任务功能

Jenkins★★★★

功能强大,支持月周天时分各个级别的自由配置

华为软件开发云★★☆☆

目前流水线功能支持每天固定一个时间或每周某些天的固定时间,无法进行更自由的配置

6、消息通知机制

Jenkins★★★☆

发送邮件进行通知,邮件内容可配置

华为软件开发云★★★☆

通过邮件和站内消息两种方式进行通知

华为软件开发云对比Jenkins-JavaWeb项目持续部署方式的更多相关文章

  1. 哪个项目管理工具好用到哭?JIRA VS 华为软件开发云

    一.产品介绍 JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 华为软件开发云 (DevCloud ...

  2. 一个项目经理对主流项目管理工具的对比:禅道VS华为软件开发云

    禅道与软件开发云对比分析报告 1. 产品介绍 禅道是易软天创出品的一款项目管理软件,集产品管理.项目管理.测试管理.文档管理.组织管理于一体,覆盖了项目管理和测试管理的核心流程. 华为软件开发云 (D ...

  3. Eclipse安装Git插件以及通过Git导入华为软件开发云项目

    --内容提交-- 1.    Eclipse安装Git插件 2.    在Eclipse中导入华为软件开发云项目, 以及常用Git操作 一. Eclipse安装Git插件 现在从eclipse官网下载 ...

  4. 看完给跪了:技术大牛总结的Github与华为软件开发云完整对比

    华为软件开发云配置管理 服务和Github是国内外比较有代表性的代码托管平台,它们以git作为版本管理工具,使项目中身处各地的人员可以协同工作,主要操作涉及仓库.分支.提交.pull request等 ...

  5. 如何使用华为软件开发云快速部署PHP网站

    华为软件开发云这个工具,从去年推出我就一直在关注,毕竟是华为最新的一款软件开发工具,最近我一直在使用华为软件开发云进行开发项目管理,它有在线编译和构建.云端在线代码检查等功能,编译省去了很多物理机器的 ...

  6. 如何将Android Studio与华为软件开发云代码仓库无缝对接(二)

    上篇文章:如何将Android Studio与华为软件开发云代码仓库无缝对接(一) 上一章讲了,如何用Android Studio以软件开发云代码仓库为基础,新建一个项目.接下来,这一章继续讲建好项目 ...

  7. Redmine迁移至华为软件开发云-项目管理

    一.方案概述 要想将Redmine中某个项目的数据导入到华为软件开发云(以下简称开发云),如果说是按照Redmine中的数据一条一条的在开发云中新建出来,肯定不是一个明智的方案,下面就是给大家介绍一个 ...

  8. 华为软件开发云(DevCloud):免费可商用的项目管理工具

    在软件开发技术和理念层出不穷的今天,如何更快的适应变化的环境,更好的满足客户的需求,已经成为决定从小到大各种规模企业能否活下去的关键. 天下武功唯快不破,在当今大环境中更是如此,微服务,敏捷开发,新的 ...

  9. GitHub转华为软件开发云详细教程

    一.复制GitHub的代码库地址 首先,打开Github网页,找到要迁移的代码仓库地址,如下: 点击Clone or Download,出现以下界面 点击Copy toclipboard(复制到粘贴板 ...

随机推荐

  1. [Linux] PHP程序员玩转Linux系列-Ubuntu配置SVN服务器并搭配域名

    在线上部署网站的时候,大部分人是使用ftp,这样的方式很不方便,现在我要在线上安装上SVN的服务器,直接使用svn部署网站.因为搜盘子的服务器是ubuntu,因此下面的步骤是基于ubuntu的. 安装 ...

  2. 使用Iterator的方式也可以顺利删除和遍历

    使用Iterator的方式也可以顺利删除和遍历 eg: public void iteratorRemove() { List<Student> students = this.getSt ...

  3. c#中的委托和c++中的bind/function对比

    在c++中,如果要实现这样一个功能,比如定时器,在指定的时间执行指定的函数,接口可以采用如下的设计 uint64_t addtimer(uint64_t t, std::function<voi ...

  4. JavaScript面向对象轻松入门之多态(demo by ES5、ES6、TypeScript)

    多态(Polymorphism)按字面的意思就是"多种状态",同样的行为(方法)在不同对象上有不同的状态. 在OOP中很多地方都要用到多态的特性,比如同样是点击鼠标右键,点击快捷方 ...

  5. 浅谈 Requests包

    浅谈 Requests包 一:Requests包是做什么的? 简单地说,是用python处理HTTP的一个包. 它的标志也非常有气质,是一个双蛇杖,按照官方的说法,一条蛇代表client,一条代表se ...

  6. Java虚拟机面试重点-------------内存分配和回收策略

    1 对象优先分配在Eden区 对象优先在Eden进行分配,大多数情况下,对象在新生代Eden区进行分配.当Eden区没有足够的空间进行分配时,虚拟机会发起一次Minor GC. 新生代GC(Ninor ...

  7. UGUI 字体背景长度自适应

    本文实现以下需求: 在UGUI中 Text为动态添加 要使Text字体背景随着Text的长度而变化 之前还在赞叹UGUI的强大 转念一想,UGUI中好像没有可以实现此功能的组件 也想出了一种办法 把背 ...

  8. spring +springmvc+mybatis组合web.xml文件配置

    <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...

  9. asp.net core高级应用:TagHelper+Form

    上一篇博客我讲解了TagHelper的基本用法和自定义标签的生成,那么我就趁热打铁,和大家分享一下TagHelper的高级用法~~,大家也可以在我的博客下随意留言. 对于初步接触asp.net cor ...

  10. Unity-Shader-镜面高光Phong&BlinnPhong-油腻的师姐在哪里

    [旧博客转移 - 2016年4月4日 13:13 ] 油腻的师姐: 以前玩过一款很火热的端游<剑灵>,剑灵刚出来的时候,某网页游戏广告视频中有句台词:"我不断的在寻找,有你的世界 ...