【发布时间】:2016-09-12 19:41:39
【问题描述】:
这次我有 Jenkins 的问题。我的应用服务器很少,每个应用服务器都有多个 tomcat。我想要实现的是命令选择器。例如:我有 APP01、APP02、APP03。每个应用服务器都有几个 tomcat:tomcat01、tomcat02、tomcat03、......当我部署时,我运行我的特殊脚本来备份现有应用、备份日志、清理、将 .war 文件放入正确的目录并启动 tomcat。命令是
app-new-execute deploy
我还有 -warage(检查 .war 文件日期)、-stop、-start、-kill(如果出现问题)。用户必须向我请求部署,或者他们必须自己登录并执行部署。他们有权这样做(通过 sudoers 文件),仅此而已 - 但有时事情会变得一团糟。我在 Jenkins 有多个构建工作。现在......是否有可能有选择器 - 例如 2 个下拉列表,用户可以在其中选择服务器(比如说)APP03 和 tomcat(比如说)TOMCAT06。问题一:JENKINS 是否有可能构建我的命令(基于选择器)
ssh APP03 sudo su - TOMCAT06 -c 'app-new-execute "deploy"'
问题2:该列表可以是动态的(txt 文件)。原因是-我定期删除/移动/删除tomcat。名称中有整体,例如 (tomcat 01,02,07,08)。我要做的是在每台服务器上创建一个名为 $(hostname).txt 的 TXT 文件,我可以从简单的脚本(cron,每天)中获取一个 tomcat 编号。类似:echo $(hostname) > $(hostname).txt 并使用一些简单的脚本(如ll /applications/new/tomcat/ | egrep ^d | grep tomcat | awk '{print $3})输出 tomcat 编号。那会给我tomcat01,tomcat03,tomcat07 ....
詹金斯是否有可能从该 .txt 文件中填充每台服务器的 tomcat 列表。如果不是,那么实现类似目标的更好方法是什么?我不是 Jenkins 的大师 - 我已经设置了多个构建作业 (SVN+ANT)。欢迎任何建议。问候
进展: 我能够获得扩展选择参数。用作魅力。我得到服务器以及tomcat。这很容易(如上所述)。我拥有的是一个 SSH 执行器。我选择服务器,输入 tomcat 号并可以执行远程 SSH。我确实有 SSH 密钥身份验证,并且可以成功登录到服务器。 Jenkins 可以轻松连接到服务器。但是我有一个 SSH 问题 - 执行远程 SSH 时 - Jenkins 无法“完成”SSH 会话。它卡在旋转的标志上,等待着什么。我的参数是 ${server}(从列表中选择)和 ${tomcat}(输入 tomcat 编号)。
ssh -t -t app_deployer@${server} <<EOF
sudo su - ${tomcat} -c './deployer_script.sh "deploy"'
echo "You are deploying app on ${server} to ${tomcat}"
EOF
退出 我在这里做错了什么?我可以(从命令行)执行命令
sudo su - ${tomcat} -c './deployer_script.sh "deploy"'
但在服务器上 - 通过 SSH 登录到应用服务器框。我错过了什么?
我不能用
进度更新 2。 我也无法通过 shell 退出 SSH 会话。命令“退出”不起作用。 那里一定有错误。 EOF 后不退出。 我错过了什么?
【问题讨论】:
-
已解决:
ssh -t -t app_deployer@${server} <<EOF sudo su - ${tomcat} -c './deployer_script.sh "deploy"' exit 0 EOF
标签: jenkins