布景

今年五月的时分玩了一下 Jenkins,最新版别 2.414.3 ,JDK 11 。本机有两个 JDK,只放到 Tomcat 里边了,看到了一个发动页面,后面有其他事情就忘记了。最近又想起来,觉得仍是应该玩一下这么有技术含量的东西的。它能主动拉取代码,主动发布,比 maven 的 wagon-plugin 插件高档多了。

本文记录笔者利用 jenkins 和 maven 的 wagon-plugin 插件组合实现一个 Shell 主动布置的使命,间隔解放双手,又前进了一步。

布置包预备

各组件版别信息及解压处理方法:

  1. JDK-11:tar.gz ,直接解压,方针主机上是JDK1.8。
  2. maven-3.6.2:tar.gz ,直接解压,bin 目录增加到环境变量。
  3. node-12.22:tar.gz ,直接解压,bin 目录增加到环境变量,由于 18今后的高版别对 gcc 有要求,所以挑选一个低版别。这个组件主要是用来对前端模块进行编译的,对于前后台别离的使用来说是有必要的。
  4. tomcat-9.0.82:修正发动脚本 catalina.sh 前面几行,增加环境变量装备:export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-11.jdk"。
  5. jenkins-2.414.3.war:最新版别,移动到 tomcat-9.0.82 的 webapps 目录下。

发动 Tomcat

进入 tomcat 目录发动 Tomcat,发动进程中碰到一个异常:

玩了一下 Jenkins,最新版别 + JDK11
解决办法:参阅 该文 修正 tomcat/conf/contex.xml 文件,在 context 节点下增加一行 :

<Resources cachingAllowed="true" cacheMaxSize="100000" />

初始化 jenkins

浏览器输入 jenkins 拜访途径,初次拜访时要求输入 jenkins 的默认密码,对着tomcat 的 catalina.out 日志去找密码复制输入就可以了。初始化挑选装置引荐的插件,等候插件完结:

玩了一下 Jenkins,最新版别 + JDK11
布置的方针主机插件装置进程很快,不像我本机装置的时分,引荐插件只装置成功了几个其他全失利了。

装置完结后需求创立一个帐号,按照提示输入就可以了。默认装置的引荐插件中有一个本地化简体中文插件的,完结后拜访 jenkins 页面上有些菜单便是中文了。可是它汉化得不完整,仍是夹杂着几个英文菜单的。

到这儿,Jenkins 就布置完结了,主界面长这样:

玩了一下 Jenkins,最新版别 + JDK11

全局装备

需求为 Jenkins 增加一下装备,如 JDK【可以增加多个,创立使命的时分再挑选】、maven

「Manage Jenkins 」菜单是办理页面,它没被汉化,主要办理插件、系统装备、全局装备等,例如:【只截取了一个屏】

玩了一下 Jenkins,最新版别 + JDK11
点击 Tools 菜单,装备根本的东西,依次指定 maven 的装备文件,JDK HOME 途径、MAVEN 装置途径等。

再点击 Plugin 菜单,装置 SVN 插件。

这样,根本的预备工作就完结了。

创立使命

点击主界面的 「新建 Item」进入使命创立页面:

玩了一下 Jenkins,最新版别 + JDK11
挑选 「Freestyle project」类型,点击“确定”,就可以进入使命装备页面了,装备项主要有:

  1. JDK【如果装备了多个 JDK ,才会出现该选项】,由于 1.8 的 rt.jar 中有许多东西类,高版别里边没有,所以最好装备一个 1.8 的 JDK,JDK 11 只是为 Tomcat 发动 jenkins 服务的。
  2. 源码办理:挑选 SVN ,装备 SVN 途径,增加凭据。
  3. 构建触发器:可以挑选定时器或者轮训源码改变定时器。
  4. 构建环境:可以勾选构建失利的判别条件,指定超时时刻,需求考虑使用构建时刻,如果设置过短,可能会导致使命构建进程中被停止。
  5. Build Steps:可以挑选 Shell 方式,编写 Shell 脚本完结构建。
  6. 构建后的操作:没有就不装备。

逐个增加装备,我这儿根据 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 的使命类型四种:

  1. 本文用的 FreeStyleProject
  2. External Project
  3. 多装备的项目
  4. 文件夹项目:类似使命分组。

可是 ExternalProject 几乎没有装备信息,它能干甚呢?

玩了一下 Jenkins,最新版别 + JDK11

第三种「多装备项目」,它和自在项目多了一个装备矩阵,可是装备矩阵到底怎样使用?布置脚本中的脚本内容,并没有履行。

本文只用了 Jenkins 的最根本的简略用法,还有一些高档 Pipeline 、多环境装备等高档用法,并不是我们看到的这个简略的页面,用户文档:

  1. www.jenkins.io/doc/book/bl…
  2. www.jenkins.io/zh/doc/tuto…