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. 如何用Three.js + Blender打造一个web 3D展览馆

    作者:vivo 互联网前端团队- Wei Xing 运营活动新玩法层出不穷,web 3D炙手可热,本文将一步步带大家了解如何利用Three.js和Blender来打造一个沉浸式web 3D展览馆. 一 ...

  2. 巧用 bc 命令测试 Linux 主机的 CPU 性能

    今天向公司申请了一台 Linux 主机,作为平时的开发环境.由于自己并不依赖远程开发(大多数情况下项目都可以本地开发.调试),于是只申请了 4C/8G 的低配机器. 突然好奇的是,这台机器的性能怎么样 ...

  3. 【做题笔记】树形 dp

    luoguP1122 最大子树和 Solve 设计状态 \(dp[i]\) 表示子树 \(i\) 的最大点权和,则有: 当 \(dp[son[i]] > 0\) 时,选以 \(son[i]\) ...

  4. 王道oj/problem10

    地址:http://oj.lgwenda.com/problem/10 思路:首先创建字符串赋初值,其次用gets()输入字符串[fgets()相对于gets()会多识别"\n", ...

  5. Jmeter+Ant+Jenkins接口自动化测试平台

    一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成. Jmeter 支持接口的测试, Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可以构成 ...

  6. nflsoj 选数1 2 3

    5711 取数-1 状态表示:1维 集合:前 \(i\) 个数里面所有的选法和 属性:所有的选法和的最大值 状态计算:选或不选 选:\(f(i-1)+a_i\) 不选:\(f(i-1)\) #incl ...

  7. 7、Spring之基于注解管理bean

    本质上:所有一切的操作都是Java代码来完成的,XML和注解只是告诉框架中的Java代码如何执行. 7.1.环境搭建 创建名为spring_ioc_annotation的新module,过程参考3.1 ...

  8. 【JMeter】使用BeanShell写入内容到文件

    使用BeanShell写入内容到文件 目录 使用BeanShell写入内容到文件 一.前言 二.提取 三.写入 一.前言 ​ 在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中.在我们使用J ...

  9. 《Kali渗透基础》03. 被动信息收集

    @ 目录 1:被动信息收集 1.1:收集内容 1.2:信息用途 2:域名信息收集 2.1:nslookup 2.1.1:命令参数 2.1.2:示例 - 命令行 2.1.3:示例 - 交互式 2.2:d ...

  10. 论文解读(AdSPT)《Adversarial Soft Prompt Tuning for Cross-Domain Sentiment Analysis》

    Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息 论文标题:Adversarial Soft Prompt Tuning for Cross-Domain Senti ...