「他のプロジェクトのビルド」の挙動について+CentOSのWindowsバッチコマンドについて

532 views
Skip to first unread message

hiryuh

unread,
May 29, 2012, 12:14:16 PM5/29/12
to 日本Jenkinsユーザー会
はじめまして、hiryuhと申します。
二点、質問させてください。

▼一点目:「他のプロジェクトのビルド」の挙動について
jenkinsの通知に「WebSocket Notifier」をつかわせて頂いておりますが、
「ビルド後の処理」に
「他のプロジェクトのビルド」>「成功した場合のみ起動」
を同時に入れていると、
ビルドが失敗したときに通知が受け取れません。
「WebSocket Notifier」と「他のプロジェクトをビルド」の順番を入れ替えても現象は変わりませんでした。

この問題を回避する方法をご教授いただけますでしょうか?

▼二点目:CentOSのWindowsバッチコマンドについて
さくらインターネットのVPSをCentOSにtomcat6をいれ、
jenkins ver.1464をデブロイしたのですが、
ビルド処理に「Windowsバッチコマンドの実行」を行うと
java.io.IOException: Cannot run program "cmd" (in directory "/var/
jenkins/workspace/test2"): java.io.IOException: error=2, No such file
or directory
というようなエラーがでてしまい、バッチコマンドを実行できません。
CentOSでは、Windowsバッチコマンドは使えないのでしょうか?

基本的なことですみませんが、ご教授いただけると嬉しいです。

以上になります。
よろしくお願いいたします。

zeug...@gmail.com

unread,
May 29, 2012, 11:56:56 PM5/29/12
to jenkin...@googlegroups.com
hiryuhさん

はじめまして trmmyと申します。

ご質問の件ですが一点目についてもうちょっと詳しく状況を教えてください。
なお私自身はあまりWebSocket Pluginについては詳しくないのですが、
状況が明らかになってくればどなたか対応される可能性もありますので。

# 作者のid:mzpに問い合わせたほうが速いかもしれませんが

まず一応の確認ですが、
「他のプロジェクトのビルド」をチェックしていない時には、
成功、失敗にかかわらず通知は行われているでしょうか

次に

> 「ビルド後の処理」に
> 「他のプロジェクトのビルド」>「成功した場合のみ起動」
> を同時に入れていると、

ということですのでジョブが2つはあると思います。
WebSocket Notifierはどのジョブに設定されていますか?

最初のジョブをjob1、job1に起動されるジョブをjob2と仮に呼ぶと
job2に設定されているのであればビルド失敗時には
job2が起動されないので当然通知は行われません。

# 同時に、ということなのでjob1だとは思いますが。。

最後に

> 「WebSocket Notifier」と「他のプロジェクトをビルド」の順番を入れ替えても現象は変わりませんでした。

「順番を入れ替え」るというのが何を意味するかすぐには想像がつきませんでした。
具体的にはどういった変更をさしているのでしょうか?


二点目についてですが

> CentOSでは、Windowsバッチコマンドは使えないのでしょうか?

使えません。
WindowsバッチはWindowsOS上で動いているJenkinsからでないと使用できません。

CentOSはLinuxといわれるOSの1つで、これはWindowsとはまったく違うOSです。
JenkinsをCentOS上で動かしているのであればWindowsバッチではなく「シェルの実行」を使用しなければなりません。
またその際実行したい内容はシェルスクリプトで記述しなければなりません。
決して「シェルの実行」を選択しさえすれば、
Windowsバッチコマンド(と同じ内容のスクリプト)を実行できるようになる、というわけではありません。

。。という状態ではすぐにシェルスクリプトを作るのはむずかしいかもしれませんが
Windowsバッチでやろうとしていた内容を書けばおおまかなアドバイスはもらえるかもしれませんよ。

ちなみにエラーは直接的には
(おそらく実装上)Jenkinsが内部で%SYSTEMROOT%\System32にあるcmdを呼びだして
Windowsバッチを実行させようとしているはずなのですが、
そんなコマンド(cmd)がCentOSには存在しないということを通知しているのだと思います。


以上、助けになれば幸いです。

2012/5/30 hiryuh <hir...@gmail.com>:

hiryuh

unread,
May 31, 2012, 2:00:45 PM5/31/12
to jenkin...@googlegroups.com
trmmyさん

はじめまして、素早い返信ありがとうございます。
返信が遅くなりすみません。

>まず一応の確認ですが、 
>「他のプロジェクトのビルド」をチェックしていない時には、 
>成功、失敗にかかわらず通知は行われているでしょうか 
行われています。
「他のプロジェクトのビルド」>「失敗した場合でも起動」
の設定にした場合も行われます。

>ということですのでジョブが2つはあると思います。 
> WebSocket Notifierはどのジョブに設定されていますか? 

> 最初のジョブをjob1、job1に起動されるジョブをjob2と仮に呼ぶと 
> job2に設定されているのであればビルド失敗時には 
> job2が起動されないので当然通知は行われません。  
job1にもjob2にも設定しています。
job2による通知はおっしゃるとおり発生しない挙動が正しいと思うのですが、
job1による通知も行われないという状況です。

>「順番を入れ替え」るというのが何を意味するかすぐには想像がつきませんでした。 
>具体的にはどういった変更をさしているのでしょうか?  
説明が足らずすみません。
「ビルド後の処理」の順番です。
ドラック&ドロップで順番を入れ替えれるようなので、入れ替えてみた次第です。

>> CentOSでは、Windowsバッチコマンドは使えないのでしょうか? 

>使えません。 
>WindowsバッチはWindowsOS上で動いているJenkinsからでないと使用できません。  
了解しました。
まあ、windowsじゃないので当然ですよね・・。
おかげさまで確証が得られました。
ありがとうございます。

以上になります。
一点目については、「WebSocket Notifier」は直接関係なく、
「他のプロジェクトのビルド」の挙動の問題なのかな?
という気持ちもありますが、他のテストパターンが簡単に用意できず、詳しく調査できていない状況です。すみません。
ご教授いただけると幸いです。
よろしくお願いいたします。

2012年5月30日水曜日 12時56分56秒 UTC+9 trmmy:
Reply all
Reply to author
Forward
0 new messages