2016-08-05 9 views
0

今回はJenkinsの質問があります。私はいくつかのアプリケーションサーバーを持って、各アプリケーションサーバーは複数のtomcatsを持っています。私が達成したいのは、コマンドセレクタです。例:私はAPP01、APP02、APP03を持っています。各アプリケーションサーバにはtomcat01、tomcat02、tomcat03などのいくつかのtomcatsがあります。私は、既存のアプリケーションのバックアップ、ログのバックアップ、クリーンアップ、正しいディレクトリに.warファイルを配置してtomcatを起動する私の特別なスクリプトを実行します。コマンドは、私は-warage(.warファイルの日付を確認してください)、-stop、-start、-kill(何かがうまくいかない場合)も持ってJenkins - SSHコマンドエグゼキュータ - セレクタ

app-new-execute deploy 

です。ユーザーは私からの配備を要求する必要があります。または、自分自身でログインして配備を実行する必要があります。彼らには(sudoersファイルを使って)それを行う権限がありますが、それ以上のことはありませんが、時には物事が面倒になることもあります。私はJenkinsで複数のビルドジョブを持っています。今、セレクタを使用することは可能ですか?たとえば、ユーザーがサーバーを選ぶことができる2つのドロップダウンリスト(APP03と言う)とTOMCAT06のtomcat(言いますと)です。質問1:それはジェンキンスが(セレクタに基づいて)コマンド

ssh APP03 sudo su - TOMCAT06 -c 'app-new-execute "deploy"' 

QUESTION2私を構築する可能性がある:そのリストには、動的(txtファイル)することができます。その理由は - 私はtomcatsを定期的に削除/移動/削除します。 (tomcat 01,02,07,08)のような名前の卸があります。私は、各サーバに$(hostname).txtというTXTファイルを作成し、単純なスクリプト(cron、毎日)からtomcat番号を取得することができます。何かのような:echo $(hostname) > $(hostname).txtll /applications/new/tomcat/ | egrep ^d | grep tomcat | awk '{print $3}のようないくつかの簡単なスクリプトを使用してtomcat番号を出力します。それは私にtomcat01、tomcat03、tomcat07を与えます.... Jenkinsがその.txtファイルからサーバごとのtomcatのリストを設定することは可能でしょうか?そのようなものを達成するためのより良い方法は何でしょうか?私はJenkinsのマスターではありません - 私は複数のビルドジョブ(SVN + ANT)を設定しています。どんな提案も大歓迎です。よろしくお願いします。

進捗状況: 拡張選択パラメータを取得できました。魅力的な作品。私はサーバーだけでなく、Tomcatを取得します。それは(記述したように)簡単でした。私が持っているのはSSHのエグゼキュータです。私はサーバーを選択し、風袋番号を入力して、リモートSSHを実行することができます。私はSSH鍵認証を持っていて、サーバに正常にログインすることができます。 Jenkinsは簡単にサーバーに接続できます。しかし、私はSSHの問題を抱えています - 遠隔のSSHを実行するとき - ジェンキンスはSSHセッションを「終了」できません。それは何かを待っている回転のロゴで立ち往生した。私のパラメータは$ {server}(リストから選んでください)と$ {tomcat}(風変わりな型番)です。

ssh -t -t [email protected]${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経由でアプリケーションサーバーボックスに記録されます。私は何が足りないのですか?

私の代わりに< < EOFの< < 'EOF' を行うことはできません - ジェンキンスは、$ {}変数のTomcatを理解することはありません。 $ {tomcat}として直接サーバーにログインすることはできません。私はすべての風袋(セキュリティの問題)のためにそのスクリプトを実行する権限を持っているデプロイヤーアカウントを持っているあなたの助けていただきありがとうございます。

進捗アップデート2. シェル経由でSSHセッションを終了することはできません。コマンド "exit"は機能しません。 そこにエラーがあるはずです。 EOFが終了しなかった後。 私は何が欠けていますか?

+0

解決しよう

ssh ${TOMCAT} "sh /path/to/${APP}": 'SSH -t -t app_deployer @ $ {サーバー} << EOF sudo su - $ {tomcat} -c './deployer_script.sh "deploy"' exit 0 EOF' –

答えて

1

はい、たとえば「選択パラメータ」を使用してAPPのような変数を使用して、TOMCAT(tom01、tom02 ...)の選択肢(app01、app02、app03))

今ジェンキンスは、例えばシェルで$ {APP}と$ {TOMCAT}を使用することができる:

+0

まだこのプラグインについて聞いたことがありません:)。見ています。見える有望:)。私はそれが行く方法だと思う。 –

+0

それは完全に機能しました。私は変更と追加の修正(プラグイン)をすべて作った –

関連する問題