布景
今年五月的时分玩了一下 Jenkins,最新版别 2.414.3 ,JDK 11 。本机有两个 JDK,只放到 Tomcat 里边了,看到了一个发动页面,后面有其他事情就忘记了。最近又想起来,觉得仍是应该玩一下这么有技术含量的东西的。它能主动拉取代码,主动发布,比 maven 的 wagon-plugin 插件高档多了。
本文记录笔者利用 jenkins 和 maven 的 wagon-plugin 插件组合实现一个 Shell 主动布置的使命,间隔解放双手,又前进了一步。
布置包预备
各组件版别信息及解压处理方法:
- JDK-11:tar.gz ,直接解压,方针主机上是JDK1.8。
- maven-3.6.2:tar.gz ,直接解压,bin 目录增加到环境变量。
- node-12.22:tar.gz ,直接解压,bin 目录增加到环境变量,由于 18今后的高版别对 gcc 有要求,所以挑选一个低版别。这个组件主要是用来对前端模块进行编译的,对于前后台别离的使用来说是有必要的。
- tomcat-9.0.82:修正发动脚本 catalina.sh 前面几行,增加环境变量装备:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-11.jdk"。
- jenkins-2.414.3.war:最新版别,移动到 tomcat-9.0.82 的 webapps 目录下。
发动 Tomcat
进入 tomcat 目录发动 Tomcat,发动进程中碰到一个异常:
解决办法:参阅 该文 修正 tomcat/conf/contex.xml 文件,在 context
节点下增加一行 :
<Resources cachingAllowed="true" cacheMaxSize="100000" />
初始化 jenkins
在浏览器输入 jenkins 拜访途径,初次拜访时要求输入 jenkins 的默认密码,对着tomcat 的 catalina.out 日志去找密码复制输入就可以了。初始化挑选装置引荐的插件,等候插件完结: 布置的方针主机插件装置进程很快,不像我本机装置的时分,引荐插件只装置成功了几个其他全失利了。
装置完结后需求创立一个帐号,按照提示输入就可以了。默认装置的引荐插件中有一个本地化简体中文插件的,完结后拜访 jenkins 页面上有些菜单便是中文了。可是它汉化得不完整,仍是夹杂着几个英文菜单的。
到这儿,Jenkins 就布置完结了,主界面长这样:
全局装备
需求为 Jenkins 增加一下装备,如 JDK【可以增加多个,创立使命的时分再挑选】、maven
「Manage Jenkins 」菜单是办理页面,它没被汉化,主要办理插件、系统装备、全局装备等,例如:【只截取了一个屏】 点击 Tools 菜单,装备根本的东西,依次指定 maven 的装备文件,JDK HOME 途径、MAVEN 装置途径等。
再点击 Plugin 菜单,装置 SVN 插件。
这样,根本的预备工作就完结了。
创立使命
点击主界面的 「新建 Item」进入使命创立页面: 挑选 「Freestyle project」类型,点击“确定”,就可以进入使命装备页面了,装备项主要有:
- JDK【如果装备了多个 JDK ,才会出现该选项】,由于 1.8 的 rt.jar 中有许多东西类,高版别里边没有,所以最好装备一个 1.8 的 JDK,JDK 11 只是为 Tomcat 发动 jenkins 服务的。
- 源码办理:挑选 SVN ,装备 SVN 途径,增加凭据。
- 构建触发器:可以挑选定时器或者轮训源码改变定时器。
- 构建环境:可以勾选构建失利的判别条件,指定超时时刻,需求考虑使用构建时刻,如果设置过短,可能会导致使命构建进程中被停止。
- Build Steps:可以挑选 Shell 方式,编写 Shell 脚本完结构建。
- 构建后的操作:没有就不装备。
逐个增加装备,我这儿根据 SpringBoot 的多模块的微服务项目,并且装备了 wagon-plugin 插件的使用,编写了一个主动化构建脚本。
主动布置脚本
#不允许 Jenkins 杀死当前脚本进程
BUILD_ID=DONTKILLME
#界说代码根途径
codePath=$WORKSPACE/myCode
echo code path is $codePath
#进入代码根途径对整个模块打包
cd $codePath
mvn clean package
#界说模块列表数组
moduleList=(a b c d e f)
#遍历数组:逐个履行主动布置指令,${#moduleList[@]}获取数组的长度
for((i=0;i<${#moduleList[@]};i++)) do
cd $codePath/${moduleList[i]}
mvn wagon:upload-single wagon:sshexec -X
done
点击 Build Now 履行使命,检查使命构建成果,模块过多的话,上述脚本履行很慢,等候其履行完结,成功的话,是绿色的。
启示录
这个进程中,遇到的阻碍便是版别和 JDK 版别的问题,还有一个便是初始化进程中的引荐插件的装置,几乎都不成功。以为有必要都装置成功,才干使用,其实并不需求。传统使用开发,都是人工操作,几乎都用不上这些主动化运维的东西。说实话,搞这一套环境,仍是挺不错的!
另外,Jenkins 的使命类型四种:
- 本文用的 FreeStyleProject
- External Project
- 多装备的项目
- 文件夹项目:类似使命分组。
可是 ExternalProject 几乎没有装备信息,它能干甚呢?
第三种「多装备项目」,它和自在项目多了一个装备矩阵,可是装备矩阵到底怎样使用?布置脚本中的脚本内容,并没有履行。
本文只用了 Jenkins 的最根本的简略用法,还有一些高档 Pipeline 、多环境装备等高档用法,并不是我们看到的这个简略的页面,用户文档: