一.Jenkins简介
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成编程可能。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工具,功能包括:
1.持续的软件版本发布/测试项目。
2.监控外部调用执行的工作。
今天我们主要讲持续的软件版本发布,即:项目的“自动化”编译、打包、分发部署。
二.Jenkins与Hudson的关系
Hudson是由Sun 开发的一个非常流行的开源的基于Java的持续集成工具,Sun被Oracle收购之后,Jenkins从Hudson项目复刻出来,现在Jenkins和Hudson是两个独立的项目。
三.Jenkins官网地址:https://jenkins.io/
四.系统要求
JDK |
JDK 1.5 或以上 |
Memory |
2 GB RAM (推荐) |
Disk Space |
没有最起码的要求。需要注意的是,因为所有的构建将保存在 Jenkins 机器上,它必须确保有足够的磁盘空间可用于构建存储。 |
Operating System Version |
Jenkins可以安装在Windows, Ubuntu/Debian, Red Hat/Fedora/CentOS, Mac OS X, openSUSE, FReeBSD, OpenBSD, Gentoo 系统上 |
Java Container |
WAR文件可以在支持 Servlet2.4/JSP2.0或更高版本的容器中运行。(一个例子是Tomcat 5)。 |
五.Jenkins安装及启动
1.下载
点击“Download Jenkins”,可以选择下载war或者zip,如果不想最新版本,则可以点击“Past Releases”去选择旧的版本进行下载。
2.如果下载的是war包,则将war放到tomcat下,启动tomcat,通过“http://ip:端口/jenkins”就可以访问jenkins了。如果下载的是zip压缩包,则为安装文件,这里不详述。
我这里配置的地址为: http://192.168.6.123:9000/jenkins/
这即是jenkins的默认初始化页面
六.Jenkins主目录
Jenkins需要一定的磁盘空间来进行构建和保持档案,默认路径可以从“系统管理>>系统设置”的主目录看到,在~/.jenkins目录下,正式环境中最好修改此路径,可通过设置“JENKINS_HOME”环境变量为新的主目录来完成修改。
OS |
输出 |
Windows |
设置环境变量 JENKINS_HOME 到你想要的位置。举个例子,可以将其设置为E: APPS 詹金斯 E:AppsJenkins |
Linux |
export JENKINS_HOME =/usr/local/Jenkins 或所希望的位置。 |
重启Jenkins服务将可以看到主目录已修改。
修改前的主目录:
linux修改命令:
用root用户登录
“cd //”回到根目录
编辑profile文件:vi /etc/profile,输入i进入输入模式
在最后加入:export JENKINS_HOME=/application/jenkins
先按ESC键,再输入:wq!进行保存并且退出
保存,退出后执行:source /etc/profile让配置生效
修改后的主目录:
构建后,打包好的war包会存在jobs下对应job下的target目录下。
七.Jenkins用户管理
第一次进入Jenkins页面,并没有用户信息,此时任何人都可以操作Jenkins。当设置了用户权限后,并去除匿名用户权限,则需要登录注册,按各自的权限操作Jenkins。
系统管理 >>Configure Global Security打开用户管理页面
勾选“启用安全”,选择“Jenkins专有用户数据库”并允许用户注册,选择“安全矩阵”来控制用户权限,第一次给匿名用户最大权限,等建立用户权限信息后再去除。保存设置后,网页右上角将出现登录、注册链接。
Jenkins里注册的第一个用户默认拥有管理员权限,即管理员账号;之后注册的所有用户都需要管理员通过“安全矩阵”设置权限。
用户列表查看用户信息。
“安全矩阵”里添加已经注册的用户,然后给用户指定权限。
八.Jenkins插件的更新及下载
我们项目里用到maven、svn,Jenkins里需要下载对应的插件才可以用。war打包好后,我们需要将war传输到远程服务器上,这将需要 Publish Over FTP或Publish Over SSH插件,我们这里选用ssh。
Jenkins里面已经默认下载了maven和svn的插件,我们可以在“已安装”里面看到。如果构建的时候报maven或svn的错,我可考虑是否是插件的版本问题,可以在“可更新”里更插件。
系统管理>>管理插件
在“可选插件”中选择Publish Over SSH插件并下载:
九.Jenkins系统设置
系统管理>>系统设置,这里面大部分配置都可以使用默认配置,我们首先需要配置jdk路径、maven路径、SSH Servers,以便后边新建任务时用到。
指定服务器上已经安装好的jdk。
因为服务器上没有事先安装好的maven,所以这里我们选择自动安装,安装3.0.4版本的。
设置远程服务器连接,并点击“Test Configuration”测试连接。
最后点击保存,完成基本设置。
十.Jenkins新建任务及配置
第一步:点击新建。
第二步:新建任务,输入项目名,我们的是maven项目,所以选择“构建一个maven项目”。
第三步:我们将看到一个设置任务详细信息的页面。
第四步:需要指定源代码管理所在的路径,我们使用的是svn,那么就指定svn仓库的地址,以便构建任务时从仓库获取代码。
如果出现以上红色的提示,则表示svn连接失败,需要点击“enter credential”输入svn的用户名和密码。
如果svn认证成功,则不需要下面的步骤;如果svn认证出错了,我们可以换一种方式添加证书;点击“Credentials”:
在这里输入svn的用户名和密码,等再次配置svn连接时,就可以使用该证书了。
如果Jenkins服务器时间与SVN服务器时间不一致,则会出现jenkins构建不能获取到svn最新代码的问题,我们可以在SVN URL加@HEAD后缀后来解决这个问题,Jenkins的SVN插件是支持这个的。
注:HEAD是SVN revision关键字,表示版本库中的最新版本。
Maven暂时忽略测试类:
第五步:这时我们就可以开始构建了,看看是否能正确的从svn获取代码并正确生成war包
点击“Console Output”可以看到控制台输出:
构建成功,可以看到构建打包好的jar和war所在的地址
十一.Jenkins自动化部署脚本编写
linux命令删除压缩包里的指定文件:zip -d /application/jenkins/workspace/platform/rentcarmall-platform/target/platform.war *.jar
dos命令删除压缩包里的指定文件(JAR格式是基于ZIP格式的,所以很多处理ZIP文件的工具都适用于JAR,WAR,和EAR文件):7z d D:/jenkins/workspace/platform/rentcarmall-platform/target/platform.war *.jar -r -x!rentcarmall-service-0.0.1-SNAPSHOT.jar -x!rentcarmall-utils-0.0.1-SNAPSHOT.jar
7z d D:/jenkins/workspace/web/rentcarmall-web/target/web.war *.jar -r
7z d D:/jenkins/workspace/web/rentcarmall-web/target/web.war static/* -r
7z d D:/jenkins/workspace/web/rentcarmall-web/target/web.war views/* -r
xcopy D:jenkinsworkspaceadminMgrvendor D:jenkinsworkspaceadminMgrdistvendor /s /e /y
【dos使用7z命令行需要做如下操作:】
1.7z1604-x64.exe安装7-Zip
2.打开7-Zip的安装目录(一般默认在C:Program Files7-Zip),复制7z.exe和7z.dll到C:WindowsSystem32文件夹下;
3.cmd打开命令行窗口即可使用7z命令
十二.Jenkins执行webpack打包
十三.
Windows下的Nodejs npm路径是appdata(C:UsersAdministrator.PC-20140801TDFHAppData),很不爽,想改回来,但是在cmd下执行以下命令也无效
npm config set cache "D: odejs ode_cache"
npm config set prefix "D: odejs ode_global"
最后在nodejs的安装目录中找到node_modules pm.npmrc文件
修改如下即可:
prefix = D:
odejs
ode_global
cache = D:
odejs
ode_cache
创建webpack环境变量,则可以全局访问webpack
Dos命令是单任务运行方式,不能多个命令顺序执行,我们在这里使用call和start连接执行
call cnpm install
call xcopy D:jenkinsworkspaceadminMgrvendor D:jenkinsworkspaceadminMgrdistvendor /s /e /y
call 7z a yp.zip dist/*
if exist web.zip (del web.zip)【 –del只能删除文件】
if exist dist (rd dist /s /q)【—rd删除文件夹,/s表示删除本目录及子目录,/q表示删除的时候不询问是否删除】
call cnpm install
call webpack
call ren D:jenkinsworkspaceusiness_backgrounddistindex.html bg.html
xcopy D:jenkinsworkspaceusiness_backgrounddist D:jenkinsworkspaceweb entcarmall-web argetwebviews /s /e /y
cd D:jenkinsworkspaceweb entcarmall-web argetweb
if exist web.zip (del web.zip)
7z a web.zip static views
xcopy D:jenkinsworkspaceweb entcarmall-web argetwebweb.zip D:jenkinsworkspaceusiness_background
十四.Jenkins进行邮件通知
1.配置SMTP服务认证
A.配置公用的QQ邮箱,开启SMTP服务
设置—》账户—》
开启SMTP服务,获取授权码。
B.Jenkin系统设置里配置SMTP服务认证
系统管理—》系统设置—》
2.使用Jenkins内置的邮件功能
针对单个job设置收件邮箱地址,邮箱地址只能固定设置,并且只能在出错时才发送邮件。
3.使用“email extension plugin”插件扩展邮件功能
安装email extension plugin插件过程不再详述
单个job配置邮件发送
基本都使用默认配置,只需要配置triggers指定触发状态和收件人即可。
【最喜欢你一言不合就打赏的样子啦~~~哈哈哈】