jenkins教程
1. 首先去jenkins官网下载jenkins war文件,https://jenkins.io/download/
2. 使用tomcat运行war文件,这里使用apache-tomcat-7.0.85-windows-x64.
笔者的运行环境如下:
jenkins tomcat : windows 7(本机)
eclipse : 本机
svn服务器 : 阿里云A
tomcat部署环境: 阿里云B (Linux ubuntu)
3. 本机已安装maven,jdk
4. 打开jenkins运行界面,url类似于 http://127.0.0.1:8080/jenkins.
首次打开时会弹出以上界面.按要求复制密码即可.首次安装不建议开始的时候就修改密码,防止自己不知道密码无法打开.如果需要修改密码,可以等安装完全结束以后,再进行修改.
5. 安装推荐的插件
5.1 安装过程中可能有一些失败,可以不进行处理.
6. jenkins已就绪.
7. 此时会进入jenkins的主界面.
此时第一阶段的安装工作已经完成.
===========================================================
8. 此时我们先不新建任务,先进行全局配置.
点击 系统管理->全局工具配置.
这里需要配置 maven 的apache-maven-3.5.0\conf\settings.xml文件位置.
配置jdk,注意要取消自动安装.
9.进行 全局安全配置
10. 点击创建一个新任务
这里需要输入一个任务名称,例如ssm2
然后选择构建一个自由风格的软件项目.
11. 填写项目名称
12. 配置 源码管理
这里主要是配置svn路径 和用户名密码,
先选择 Subversion-> Modules.
Repository URL填入项目svn地址.
通过下方的Credentials Add添加 svn用户名 和 密码.
Check-out Strategy这里选择 Use 'svn update' as much as possible.
13. 构建触发器
勾选 Poll SCM,日程表表单 填入 H/5 * * * *
14. 构建环境
14.1 选择 Execute Windows batch command.
命令填入 copy /Y D:\resources\db.properties %WORKSPACE%\src\main\resources\db.properties
这个命令的作用是从svn检出代码后替换资源文件为服务器上应该使用的配置.
14.2 选择 Invoke top-level Maven targets
Goals填入 clean package -Dmaven.test.skip=true
保存以后这里会自动分行.
15. 由于后续我们需要安装插件,这里暂时先保存一下.
16. 选择 系统配置->管理插件
选择 可选插件 搜索 container,这个插件的全名是 Deploy to container
这个插件可能位于下方,请向下滚动,仔细找一找.
.17. 安装tomcat部署插件.
18. 还有一个插件 与上面的插件功能等同,安装一个即可,插件名称为: Publish Over SSH,可以搜索publish.
19. 此时多了两个插件
20. 构建后的操作
20.1 tomcat插件
由于tomcat插件需要一个用户名密码,这个需要在部署服务器tomcat conf/tomcat-users.xml里配置.
这里仅需要配置 manager-script角色即可.但建议 manager-gui也配置上.
20.2 ssh插件的配置
这里有一个报错,但实际未发现有影响.
21. 配置完 保存
22. 点击 立即构建.
==============================================================
构建过程中可能会有以下错误:
1. 数据库未使用远程数据库导致部署服务器数据库无法访问
2. 阿里云安全组限制了8080端口.需要通过控制台设置允许对应的端口.
3. maven打包时未打包必要的资源文件,导致项目报错.
可以通过 控制台 输出 查看详细错误信息.
我这边由于 项目有错误,导致jenkins报错:
[INFO] WEB-INF\web.xml already added, skipping [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 12.529 s [INFO] Finished at: 2018-03-09T20:53:26+08:00 [INFO] Final Memory: 21M/206M [INFO] ------------------------------------------------------------------------ Deploying C:\Users\Administrator\.jenkins\workspace\ssm2\target\icessm.war to container Tomcat 7.x Remote with context /icessm Redeploying [C:\Users\Administrator\.jenkins\workspace\ssm2\target\icessm.war] Undeploying [C:\Users\Administrator\.jenkins\workspace\ssm2\target\icessm.war] Deploying [C:\Users\Administrator\.jenkins\workspace\ssm2\target\icessm.war] ERROR: Build step failed with exception org.codehaus.cargo.container.ContainerException: Failed to deploy [C:\Users\Administrator\.jenkins\workspace\ssm2\target\icessm.war] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:106) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:184) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117) at hudson.FilePath.act(FilePath.java:1009) at hudson.FilePath.act(FilePath.java:987) at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690) at hudson.model.Build$BuildExecution.post2(Build.java:186) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635) at hudson.model.Run.execute(Run.java:1752) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded "FAIL - Deployed application at context path /icessm but context failed to start " instead of the expected "OK" message at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:715) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:761) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:312) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:101) ... 18 more org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The Tomcat Manager responded "FAIL - Deployed application at context path /icessm but context failed to start " instead of the expected "OK" message at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:715) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:761) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:312) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:101) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:184) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117) at hudson.FilePath.act(FilePath.java:1009) at hudson.FilePath.act(FilePath.java:987) at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690) at hudson.model.Build$BuildExecution.post2(Build.java:186) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635) at hudson.model.Run.execute(Run.java:1752) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Build step 'Deploy war/ear to a container' marked build as failure SSH: Current build result is [FAILURE], not going to run. Finished: FAILURE
将部署的代码调整正确后,错误消失.
如果jenkins报错,可以 先把jenkins打好的war直接放到本地tomcat看能不能正常运行.
如果不能运行需要查看tomcat logs下的对应日志.