Jenkins实践之入门体验

持续集成,快速发布是DevOps实践的最好方式。
目录
准备工作
在使用Jekins之前,先安装好如下组件:
- JDK,并设置好Java环境变量,启动Jenkins时需要执行java命令
- Maven(可选),但是为了使用自定义的settings.xml文件,自定义安装比较好。
并且确认部署Jenkins的主机能够访问外网(需要下载插件)。
下载/安装/启动
直接下载jenkins.war,然后执行:java -jar jenkins.war就可以启动jenkins了。
第一次启动时会默认生成一个密码,第一次访问页面时将会使用该密码。
第一次登陆时会提示安装插件,可以直接安装推荐的插件列表,也可以自定义安装指定插件,安装插件需要等待一段时间。
插件安装完毕之后需要创建第一个管理员账户,设置完毕之后重启登录jenkins。
提示:
- 如果在新建第一个管理员账户之后无法登录,请重启jekins重新访问首页并登录即可。
- 如果需要修改jekins的workspace路径,请在第一次启动之前就修改,如果在启动之后修改将会重新执行一次初始化操作。
基础配置
第一次使用新建的管理员账户登录之后,先进行全局工具配置,路径:“系统管理”->“全局工具配置”。
在这里进行全局的MAVEN,JDK,GTI等基础环境配置。
插件配置
为了构建Maven项目,需要先安装插件:“Maven Integration”插件。
安装路径:“系统管理”->“管理插件”,切换到“可选插件”标签页,在右上角搜索框输入:“Maven Integration”,选择并安装“Maven Integration”插件,安装插件需要等待一段时间。
构建第一个Java项目
安装完“Maven Integration”插件之后,回到jenkins首页。
点击“新建任务”,输入任务名称,选择“构建一个maven项目”,点击“确定”按钮进入到任务配置界面,分别对如下参数进行配置:
- General:配置任务基本信息,如:任务描述等等。
- 源码管理:选择Git,输入源码仓库地址,默认选择从master分支构建。
- 构建触发器:选择“轮询 SCM”,填入构建计划,如每3分钟检查一次项目变化:
*/3 * * * *。 - 项目构建:在Build选项中,“Root POM”参数为构建时需要使用的pom.xml文件,默认使用的项目根目录下的pom.xml。如果pom.xml不在根目录下,需要明确填写,如:xxx/yyy/pom.xml;参数“Goals and options”为执行构建时使用的命令,如:
clean package -DskipTests=true。
在任务页面的左侧菜单中,选择“立即构建”,此时在“构建历史”中就可以看到所有执行构建任务的信息。点击任意一个历史构建任务,选择“控制台输出”可以查看详细的构建输出日志。
部署项目
构建完成够可以通过执行脚本的方式将程序部署的目标服务器,分三步走:
第一步:配置免密码登录方式登录目标服务器(SSH免密码登录)
第二步:将构建的文件复制到目标服务器(使用scp命令)
第三步:通过插件“Jenkins SSH”在目标服务器执行脚本进行程序部署
【参考】
http://www.liaoxuefeng.com/article/001463233913442cdb2d1bd1b1b42e3b0b29eb1ba736c5e000 使用Jenkins进行持续集成
http://fanlychie.github.io/post/jenkins-remote-ssh.html Jenkins SSH 远程执行 Shell 脚本
https://jenkins.io/doc/book/using/ jenkins官方手册
https://www.cnblogs.com/exmyth/p/7148330.html 更改Jenkins的workspace目录
https://segmentfault.com/q/1010000006741100 jenkins管理界面中没有 构建maven项目 这一项
Jenkins实践之入门体验的更多相关文章
- 第1章Java入门体验
第1章Java入门体验 1.java简介和平台应用 Java是sun公司开发出来,现在属于ORACLE公司java分为几个部分:首先是最基础的Java SE部分,这部分是Java的基础知识,主要包括: ...
- Vert.x入门体验
Vert.x入门体验 一.概述 Vert.x(http://vertx.io)是一个基于JVM.轻量级.高性能的应用平台,非常适用于最新的移动端后台.互联网.企业应用架构. 二.安装配置 访问Vert ...
- 有没有最好的学习Angularjs2的视频入门体验?
Which are the best video tutorials for learning AngularJS 2? 有没有最好的学习Angularjs2的视频入门体验? 翻译来源:https:/ ...
- Spring实践系列-入门篇(一)
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...
- SpringBoot集成Spring Security入门体验
一.前言 Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权. 二者区别 Spring Security:重量级安全框架 Apache S ...
- Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 【持续集成与交付快速入门必备】
Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 [持续集成与交付快速入门必备]
- Jenkins持续集成 入门实践
本文测试环境: ASP.NET MVC项目,Windows 7环境,SVN代码仓库, MSBuild,TortoiseSVN 持续集成这种工具很多了,Jenkins比较常用,他的原理就是一个服务,有一 ...
- SSH的简单入门体验(Struts2.1+Spring3.1+Hibernate4.1)- 查询系统(下)
我们继续吧,SSH最大的优点就是实现的系统的松耦合,能够将后台和前台有机的分离开来. 一.目录结构 一个好的程序要有一个好的开始.我们先来看看整个目录结构吧 主要的是三层架构概念,或者说是mvc的概念 ...
- 研发协同平台持续集成之Jenkins实践
导读 研发协同平台有两个核心目标,一是提高研发效率 ,二是提高研发质量,要实现这两个核心目标,实现持续集成是关键之一. 什么是持续集成 在<持续集成>一书中,对持续集成的定义如下:持续集成 ...
随机推荐
- 该用Python还是SQL?4个案例教你节省时间
在数据分析行业,对数据提出的每一个问题都可以用多种潜在的语言和工具包来回答.每种语言都有其优势,它们之间也存在着不同的区别.不能否认的是,有些操作用Python执行起来要比SQL更加高效.这篇文章分享 ...
- C# 虚拟串口通信
将主端口COM8拆分成 COM1和COM2两个虚拟端口 COM8接收的消息会传递给COM1和COM2 SerialPort spSend;//spSend,spReceive用虚拟串口连接,它们之间可 ...
- 西湖论剑2019-msc之奇怪的TTL
msc1给了一串很长的TTL字符,参考一些隐写的文章,猜测是在ttl中藏了信息,题目是这样的 我们截获了一些IP数据报,发现报文头中的TTL值特别可疑,怀疑是通信方嵌入了数据到TTL,我们将这些TTL ...
- serialize()与serializeArray()
1.了解serialize()与serializeArray() serialize()序列化表单元素,用于ajax请求, serializeArray()序列化表单元素,类似于serialize,但 ...
- 浏览器仿EXCEL表格插件 - 智表ZCELL产品V1.4发布
智表(zcell)是一款浏览器仿excel表格jquery插件.智表可以为你提供excel般的智能体验,支持双击编辑.设置公式.设置显示小数精度.下拉框.自定义单元格.复制粘贴.不连续选定.合并单元格 ...
- Namespace讨论
我们需要讨论一个深层次的问题: 为什么不直接在 tape17162c5-00 和 tapd568ba1a-74 上配置 Gateway IP,而是引入一个 namespace,在 namespace ...
- mybatis中常见的问题总结
如下所有举例基于springboot+mybatis项目中,SSH使用mybatis的写法也一样,只是形式不同而已 问题1.org.apache.ibatis.binding.BindingExcep ...
- Windows下安装配置MongoDB
Windows下安装配置MongoDB 一,介绍 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB ...
- JS学习笔记:(二)回流和重绘
在搞清楚回流和重绘的概念之前,我们要清除浏览器的渲染过程. 解析生成DOM Tree(此时包含所有节点,包括display:none); 根据CSS Object Module(CCSSOM)计算节点 ...
- DAY19、日常模块
一.hashlib模块:加密1.基本使用:import hashlibcipher = hashlib.md5('需要加密的数据(二进制形式)'.encode('utf-8'))print(ciphe ...