目的是:在 jenkins 构建完项目后,自动将编译的 maven war 包复制到 tomcat/webapp 目录下部署,然后启动 tomcat .
在脚本中,能正常将编译后的 war 包复制到tomcat/webapp
目录下,但是执行 sh startup.sh &
后 tomcat 并没有启动起来.
脚本执行到 catalina.sh
中的输出CATALINA_BASE
、CATALINA_TMPDIR
后就停止了,这是在 jenkins 的console output
中看到的 之后输出的是 jenkins job 执行成功的信息。
我对脚本一窍不通,实在是没招了,请大家支招。 多谢!!!!
没有使用脚本,在别的地方找到这个插件然后使用插件部署到tomcat了, 插件地址在这里
1
Gonster 2016-11-01 18:52:17 +08:00 via iPhone
Jenkins 构建后执行脚本, Jenkins 在脚本之行完成后会把脚本创建的进程都杀死,在 sh 脚本里修改一个变量就可以避免被杀死(实在记不住变量名了)。
或者你可以考虑下其他 Jenkins 插件做这种事情。 |
2
kylinking 2016-11-01 19:04:04 +08:00
接楼上,有个 Publish Over SSH 可以复制文件和执行脚本,不过更对集群进行适合批量管理,可以一试
|
3
Gonster 2016-11-01 19:11:05 +08:00 via iPhone
之前看文档 Jenkins 的理念主要是它就是用来构建的而不是部署,部署应该交给其他工具,构建的话构建完了之后自然应该停止,所以自带插件都是这样的,不然脚本可能会在 Jenkins 服务器上一堆残留一堆没杀死的进程。
其他有些插件,设计就是用来部署的所以不会按 Jenkins 这种设计来。 |
4
palmers OP @Gonster 本来计划是安装 jenkins 一个插件来部署自动部署项目的,但是这个插件死活下载不下来,就想到用脚本来复制 war 包然后杀死 tomcat 进程然后调用 tomcat 启动脚本来启动 tomcat 服务的。 就是这个插件 : Deploy to container Plugin
|
6
Gonster 2016-11-02 08:46:06 +08:00 via iPhone
@palmers 其实我没完全看明白,你的意思是本来不想用 deploy to container 插件,但是下载不下来,所以用的是 Execute shell 运行脚本做你描述的事情?
如果是我理解的这样,你只能用 Execute shell ,那一楼我提到的那个变量名字是 BUILD_ID ,随便改成其他值就好了。参考: http://stackoverflow.com/questions/5728899/tomcat-script-not-working-when-run-from-hudson https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller |
7
Gonster 2016-11-02 08:48:01 +08:00 via iPhone
6 楼 打错:“你意思本来想用 deploy to container 插件”
|
8
palmers OP @Gonster 对, 是这个意思,这个插件一直安装失败,所以想着用脚本实现自动部署,但是 tomcat 启动脚本`startup.sh`执行到这就结束了,去 catalina.sh 也没看明白,主要是我不懂 sh 脚本语法,这是 jenkins 执行 job 最后的输出,麻烦你帮我看下是哪儿出问题了:
从这儿就开始调用`startup.sh`了,在我的自定义脚本中是 这条语句: `./startup.sh &` Using CATALINA_BASE: /home/tianzhiwang/casicdata/tomcat/apache-tomcat-7.0.63 Using CATALINA_HOME: /home/tianzhiwang/casicdata/tomcat/apache-tomcat-7.0.63 Using CATALINA_TMPDIR: /home/tianzhiwang/casicdata/tomcat/apache-tomcat-7.0.63/temp Finished: SUCCESS 最后, 我尝试在'shell execute' block 添加了 BUILD_ID 键值对,但是问题依旧. |
9
Gonster 2016-11-02 12:52:18 +08:00 via iPhone
|
10
Gonster 2016-11-02 12:53:43 +08:00 via iPhone
六楼。。写错了
|