本文章主要描述以一场景的持续集成。
项目代码存放在SVN上,项目是使用Maven构建的Web,需要把项目下载编译,并发布到另一台机器上的Tomcat上。
一、前置准备
1、装备一台机器,并安装Jenkins\JDK\Tomcat\Maven
请参照以下连接配置https://my.oschina.net/sdlvzg/blog/1586438
2、需要准备一个Maven构建的Web项目,并上传到SVN上,当前我使用的是码云,只需要开通SVN支持就可以了。
二、配置JDK\Maven
通过浏览器登录Jenkins,通过“系统菜单”进入“全局工具配置”功能。
主要配置JDK、Maven两部分。
1、配置JDK,参照下图配置:
2、配置Maven,参照下图配置:
完成上图的配置,就可以执行以下的插件安装了。
三、安装插件
通过“系统菜单”进入“管理插件”功能。
选择“已安装”标签页,查看已安装的插件,通过右上角的过滤,查询“Deploy to container Plugin”和“Maven Integration plugin“,看是一下是否存在。如果不存在点击可选择插件,通过右上角的过滤,查询“Deploy to container Plugin”和“Maven Integration plugin“插件,选择并点下面的直接安装按钮就可以完成,插件安装了。如果已经存在就可以不做此步骤。
四、配置任务
完成上步的插件安装,就可以配置任务了。
通过菜单进入“新增”功能。
在新建任务页面,输入任务名称,选择构建一个maven项目,点击确定,就完成一个任务的创建,进入任务配置页面。
主要配置任务的三个方面
- 源码管理
- Build
- 构建后操作
1、源码管理
此步骤主要配置在哪个代码库下载代码,以及代码库登录的用户名及密码。此处我们选择的是SVN。
2、Build
此步骤主要配置Maven编译所配置文件。
3、构建后操作
此步骤主要是配置项目编译后需要发布到哪一个Tomcat上,此处需要配置Tomcat访问的用户名密码。Tomcat访问的用户名密码配置请看文章最后。
完成上面三步,点击确定就可以完成执行任务的配置。
五、执行任务
在Jenkins的任务列表中,可以看到我们创建的任务,可以点击上图中的按钮,开始做任务发布。点击任务名称,可以进入任务明细页面。
任务明细页面可以查看到历史构建的列表,通过图标可以区分是否构建成功,红色未构建成功,蓝色构建成功,点击进入可以进入某一次构建的页面。
在某一次的构建页面,可以点击“Console output”,打开此次构建的日志,如下:
Started by user admin
Building in workspace /root/.jenkins/workspace/webtest
#开始下载代码,从SVN中
Updating svn://gitee.com/sdlvzg/webtest at revision '2017-12-08T23:04:36.701 +0800'
Using sole credentials lvzg_abc@163.com/****** in realm ‘<svn://gitee.com:3690> gitee.com’
At revision 2
#开始编译代码,使用Maven
No changes for svn://gitee.com/sdlvzg/webtest since the previous build
Parsing POMs
Established TCP socket on 43122
[webtest] $ /opt/jdk1.8.0_144/bin/java -cp /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.12-alpha-1.jar:/opt/apache-maven-3.5.2/boot/plexus-classworlds-2.5.2.jar:/opt/apache-maven-3.5.2/conf/logging jenkins.maven3.agent.Maven35Main /opt/apache-maven-3.5.2 /opt/apache-tomcat-9.0.2/webapps/jenkins/WEB-INF/lib/remoting-3.14.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.12-alpha-1.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.12-alpha-1.jar 43122
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f /root/.jenkins/workspace/webtest/pom.xml clean install -D maven.test.skip=true
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building webtest Maven Webapp 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
[INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom (3.9 kB at 1.5 kB/s)
[INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar
[INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar (25 kB at 18 kB/s)
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ webtest ---
[INFO] Deleting /root/.jenkins/workspace/webtest/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ webtest ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /root/.jenkins/workspace/webtest/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ webtest ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ webtest ---
[INFO] Not copying test resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ webtest ---
[INFO] Not compiling test sources
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ webtest ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ webtest ---
[INFO] Packaging webapp
[INFO] Assembling webapp [webtest] in [/root/.jenkins/workspace/webtest/target/webtest]
[INFO] Processing war project
[INFO] Copying webapp resources [/root/.jenkins/workspace/webtest/src/main/webapp]
[INFO] Webapp assembled in [64 msecs]
[INFO] Building war: /root/.jenkins/workspace/webtest/target/webtest.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ webtest ---
[INFO] Installing /root/.jenkins/workspace/webtest/target/webtest.war to /root/.m2/repository/org/morecare/webtest/0.0.1-SNAPSHOT/webtest-0.0.1-SNAPSHOT.war
[INFO] Installing /root/.jenkins/workspace/webtest/pom.xml to /root/.m2/repository/org/morecare/webtest/0.0.1-SNAPSHOT/webtest-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.009 s
[INFO] Finished at: 2017-12-08T23:04:53+08:00
[INFO] Final Memory: 15M/36M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving /root/.jenkins/workspace/webtest/pom.xml to org.morecare/webtest/0.0.1-SNAPSHOT/webtest-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /root/.jenkins/workspace/webtest/target/webtest.war to org.morecare/webtest/0.0.1-SNAPSHOT/webtest-0.0.1-SNAPSHOT.war
channel stopped
#开始部署代码到Tomcat下
Deploying /root/.jenkins/workspace/webtest/target/webtest.war to container Tomcat 8.x Remote with context
[/root/.jenkins/workspace/webtest/target/webtest.war] is not deployed. Doing a fresh deployment.
Deploying [/root/.jenkins/workspace/webtest/target/webtest.war]
#部署成功
Finished: SUCCESS
如上图日志,最后展示SUCCESS,就表示部署成功了