1,Jenkins相关工具概念:
要熟练掌握Jenkins持续集成的配置、使用和管理,需要了解相关的概念。例如代码开发、编译、打包、构建等名称,常见的代码相关概念包括:JDK、JAVA、MAKE、ANT、MAVEN、Eclipse、Jenkins等。
1)Make编译工具:
Make编译工具是Linux和Windows最原始的编译工具,在Linux下编译程序常用make,Windows下对应的工具为nmake。读取本地makefile文件,该文件决定了源文件之间的依赖关系,Make负责根据makefile问价去组织构建软件,负责指挥编译器如何编译,连接器如何连接,以及最后生成可用二进制的代码。
 
2)Ant编译工具:
Make工具在编译比较复杂的工厂使用起来不方便,语法很难理解,延伸出Ant工具。Ant工具属于apache基金会软件成员之一,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
Ant构建文件XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标元素,这些目标之间可以有依赖关系。
构建一个新的项目时,首先应该编写Ant构建文件。因为构建问价定义了构建过程,并为团队开发中每个人所使用。
Ant构建文件默认名为build.xml,也可以取其他的名字。只不过在运行的时候需把这个命名当作参数传给Ant。构建文件可以放在任何的位置,一般做法时放在项目顶层目录也即根目录,这样可以保持项目的简洁和清晰。
 
3)Maven工具时对ant工具的进一步改进,在make工具中,如果我们要编译某些源文件,首先要安装编译器等工具。有时候需要不同版本的编译器,在Java的编译器需要不同的各种包的支持,如果把每个包都下载下来,在makefile中进行配置制定,当需要的包非常多时,很难管理。
Maven与Ant类似,也是个构建(build)工具,它是如何调用各种不同的编译器连接器呢? 使用Maven pulgin(maven 插件),Maven项目对象模型POM(Project Object Model),Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。
POM是Maven项目中的文件,使用XML表示,名称为pom.xml。在Maven中,当构建Project的时候,不仅仅是一堆包含代码的文件。 还包含pom.xml配置文件,该文件包括Project与开发者有关的、缺陷跟踪系统、组织与许可、项目的URL、项目依赖、以及其他配置。
在基于Maven构建编译时,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。由于Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven构建脚本就可以构建简单的项目。
由于Maven的面向项目的方法,许多 apache Jenkins项目发文时使用Maven, 而且公司项目采用Maven 的比例在持续增长。
 
4)Jenkins框架工具:
Maven 可以实现对软件代码进行编译、打包、测试,功能已经很强大了,那还需要Jenkins干嘛? Maven可以控制编译,控制连接,可以生成各种报告,可以进行代码测试。
但是默认不能控制完整的流程? 没有顺序定义,是先编译还是先连接? 先进行代码测试,还是先生成报告? 可以使用脚本来对Maven进行控制,实现这些流程控制。
 
5)Eclipse工具:
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。 就其本身而言,它只是一个框架和一组服务, 用于通过插件组件构建开发环境。 Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK),主要用于开发者开发网站代码。
 
 
2,Jenkins平台设置:
Jenkins持续集成基础平台部署完毕,需要进行简单配置,例如配置JAVA路径、安装Maven、指定SVN、GIT仓库地址等,如下为JAVA路径和Maven设置步骤:
1)Jenkins服务器安装Maven:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -xzf  apache-maven-3.3.9-bin.tar.gz
mv  apache-maven-3.3.9   /usr/maven/

2)Jenkins系统设置环境变量,如下图:

3)Jenkins系统设置完成,需插件job工程:
Jenkins平台首页>创建一个新任务>填写Item名称>"构建一个maven项目"(如果没有maven项目工程选项: 需要安装插件:Maven Integration plugin或者MAven Release PIug-in Plug-in)

选择subversion配置SVN仓库地址,如果报错需要输入SVN用户和密码:

源码管理,SVN代码迁出参数详解如下:

Respository url                     配置SVN仓库地址;
Local module directory         存储SVN源码的路径;
Ignore externals option                 忽略额外参数;
Check-out Strategy                        代码检出策略;
Repository browser                       仓库浏览器,默认Auto;
add more locations                   源码管理,允许下载多个地址的代码;
Repository depth                   获取SVN源码的目录深度,默认为infinity;
empty: 不检出项目的任何文件,files: 所有文件,immediates:目录第一级,infinity:整个目录所有文件。

4)配置Maven编译参数,Build>Goals and options>输入“clean install_Dmaven.test.skip=true”,此处为maven自动编译、打包并跳过单元测试选项:

clean install_Dmaven.test.skip=true

Maven工具常用命令如下:

mvn clean                               打包清理(删除target目录内容)
mvn compile 编译项目
mvn package 打包发布
mvn package -Dmaven.test.skip=true 打包时跳过测试
通过以上步骤的配置步骤,即完成了JOB工程的创建。
 
3,Jenkins构建JOB工程:
JenkinsJOB工程创建完毕,如下直接运行构建,Jenkins将从SVN仓库获取SVN代码,然后通过Maven编译、打包,并最终生成可以使用的war包即可。操作步骤如下:
1)单击 晒库网发布工程名, 进入JOB工程详细配置界面, 单击“立即构建”:

控制台日志打印"Finished: SUCCESS" , 则表示Jenkins持续集成构建完成,会在Jenkins服务器目录晒库网工程名目录下产生网站可用的war文件,将改war包部署至其它服务器即可,war路劲为:/root/.jenkins/workspace/晒库网发布/target/ 下图指示:
至此,Jenkins持续集成平台自动构建软件完成,该步骤只是生成了war包,并没有实现自动将该war包部署至其它服务器,如果要自动部署需要基于Jenkins插件或者基于shell、python等自动化脚本部署 或者使用ansibl模块批量部署。

 
3,Jenkins自动化部署:
如上通过手动构建JenkinsJOB工程,自动编译、打包、生成war包,并不能实现自动部署,如需要实现自动部署可以基于自动部署插件或者shell、python脚本等。
如下以shell脚本实现Jenkins自动部署war至其它多台服务器,并自动启动Tomcat,实现最终web浏览器访问。Jenkins自动部署完整操作步骤如下:
 
1) 单击 晒库网发布 工程名>配置>构建后操作>输入: **/target/*.war,该选项主要用于Jenkins编译后将war包存档一份到targe目录,该文件可以通过Jenkins Tomcat的HTTP端口访问:

2)查看JenkinsURL地址:

例如是:
http://139.224.227.121:7001/job/www.jfedu.net/lastSuccessfulBuild/artifact/target/edu.war 3)如下为 192.168.1.15客户端服务器部署edu.war,使用ansible模块调用脚本:(需要提前配置好ssh 免密钥:)
ansible 192.168.1.15 -m script -a "/data/sh/web.sh"

ssh-keygen  -t  rsa  -P ' '  -f /root/.ssh/id_rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.15

4)shell脚本无需放在客户端,shell内容如下:

#!/bin/bash
#Auto deploy Tomcat for jenkins
#By author 晒库网更新 2020
export JAVA_HOME=/usr/java/jdk1.8.0_131
TOMCAT_PID=`/usr/sbin/lsof -n  -P  -t  -i  :8080`
TOMCAT_DIR="/usr/local/tomcat/"
FILES="edu.war"
DES_DIR="/usr/local/tomcat/webapps/ROOT/"
DES_URL="http://139.224.227.121:7001/job/www.jfedu.net/lastSuccessfulBuild/artifact/target/"
BAK_DIR="/export/backup/`date +%Y%m%d-%H%M`"
[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID
cd $DES_DIR
rm -rf $FILES
mkdir -p $BAK_DIR;\cp -a $DES_DIR/* $BAK_DIR/
rm -rf $DES_DIR/*
wget $DES_URL/$FILES
/usr/java/jdk1.6.0_25/bin/jar  -xvf  $FILES
####################
cd $TOMCAT_DIR;rm -rf work
/bin/sh $TOMCAT_DIR/bin/startup.sh
sleep 10
tail -n 50 $TOMCAT_DIR/logs/catalina.out

Jenkins相关概念的更多相关文章

  1. Jenkins持续集成企业实战

    阅读目录: Jenkins持续集成企业实战1.1 目前主流网站部署的流程1.2 Jenkins持续集成简介1.3 Jenkins持续集成组件1.4 Jenkins平台安装部署1.5 Jenkins相关 ...

  2. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  3. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  4. jenkins自动发布java代码

    注:本文来源于<KaliArch> jenkins笔记 一.相关概念 1.1 Jenkins概念: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台. ...

  5. CentOS6.X、7.X下Jenkins的安装及使用

    一.相关概念 1.1 Jenkins概念: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenk ...

  6. Jenkins Gitlab持续集成打包平台搭建

    http://www.cnblogs.com/skyseraph/p/5695021.html 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的 ...

  7. 【我的Android进阶之旅】Jenkins挂载slave节点,增强分布式编译的效率

    由于公司的Jenkins任务越来越多,而且所有的Android Jenkins任务都在同一台服务器上进行编译,而且该服务器配置Jenkins任务最多3个任务同时运行,所以有时候大家一起编译的时候,只能 ...

  8. Jenkins操作手册 - 巨详细,一篇足矣!

    一.继续集成相关概念 1.1.什么是持续集成? 随着软件开发复杂度的不断提高,团队开发成员间如何更好的协同工作以确保软件开发的质量已经成为开发过程中不可回避的问题.尤其是近年来敏捷开发在软件领域越来越 ...

  9. GitLab、Jenkins结合构建持续集成(CI)环境

    1 持续集成 概述及运行流程 1.1 持续集成概述 持续集成概述:持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并迚程自 ...

  10. Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告

    最近在做基于jenkins ant  junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...

随机推荐

  1. 「学习笔记」KMP 算法

    前置知识 前缀 是指从串首开始到某个位置 \(i\) 结束的一个特殊子串. 真前缀 指除了 \(S\) 本身的 \(S\) 的前缀. 举例来说, 字符串 abcabeda 的所有前缀为 {a, ab, ...

  2. 如何快速又高质量的输出PDF实验报告?

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. PDF文档的打印在很多应用场景中都会被使用到,最为常见的就是实 ...

  3. CMDB 相关

    CMDB 术语 CI(配置项) 配置管理解决方案(如CMDB)中的基本有形或无形实体. 为了交付IT服务而需要管理的任何组件. 通常包括IT服务.硬件.软件.架构.人员和正式文档(如流程文档和sla) ...

  4. 原来ES7~12分别增加了这些属性呀

    ES6也称为ES2015,于2015年发布,此后每年都有新增一些属性,分别命名为ES7~12,发布的年份分别对应2016年到2021年 ES7 includes方法 数组中新增了includes方法, ...

  5. 如何用windows任务视图管理多个程序,提高.net开发效率

    在 Windows 操作系统中,任务栏是一个非常重要的工具栏,用来显示当前正在运行的程序和任务.如果同时运行了很多程序,任务栏上的图标就会变得非常拥挤,不方便管理和切换.为了提高工作效率,可以通过任务 ...

  6. Python中字符串截取

    # 截取字符串时,如果位数不够,Python不会报错,而是返回空字符串 # 这是因为Python中的字符串是不可变的,所以当我们尝试访问一个不存在的索引时,Python会返回空字符串而不是报错 # 示 ...

  7. 三维模型OSGB格式轻量化技术在大规模场景的加载和渲染的作用分析

    三维模型OSGB格式轻量化技术在大规模场景的加载和渲染的作用分析 在移动设备上,大规模场景的加载和渲染是一个不容忽视的问题.对于OSGB格式轻量化处理来说,大规模场景的加载和渲染也是其中一项重要的任务 ...

  8. Python 设置环境变量方法

    Python中的os模块 Python中的os模块提供了很多与操作系统相关的功能.其中就包括设置环境变量的方法,即setenv()方法. 使用os.setenv()方法设置环境变量 import os ...

  9. springboot下载文件 范围下载

    springboot下载文件 范围下载 关键词:springboot,download,Range,Content-Range,Content-Length,http code 206 Partial ...

  10. shell、python时间函数小结

    有时需要写一些定时任务脚本,简单总结一下,备忘. 1. 获取当前时间 python 在windows下精确到0.001秒,linux下时间精度为0.000001秒 >>> impor ...