0

私は単純な問題になりたいと思っていることを抱えています。しかし、それは私を一日中困惑させました。

私はWindowsでcruisecontrolを使用しており、Cygwinを介してセットアップされています。私はLinuxプラットフォームでCCの経験があり、私が行っていることの多くは非常に似ています。ただし、config.xmlファイルのScheduleセクションで実行しようとするほとんどのコマンドでエラーが発生します。

例外は次のとおりです。

ExecBuilder - Could not execute command: /cygdrive/d/Program\ Files/Subversion/bin/svn
net.sourceforge.cruisecontrol.CruiseControlException: Encountered an IO exception while attempting to execute 'net.sourceforge.cruisecontrol.builders.ExecScript@b80f1c'. CruiseControl cannot continue.
at net.sourceforge.cruisecontrol.builders.ScriptRunner.runScript(ScriptRunner.java:133)

このタイプのエラーを発生させる、実行しようとしたコマンドの例を次に示します。

<exec command="${CCLoc}/projects/${project.name}/IOSdllScript"/>

-cruisecontrol.batの外部でテストしたスクリプトを実行し、実行します。最初の行に#!/ bin/shが含まれています

<exec command="${CCLoc}/projects/${project.name}/EmptyFile"/>

-本質的に空のテキストファイルであり、問​​題が私のスクリプトとは何の関係もないことを証明しています。

<exec command="/cygdrive/d/Program\ Files/Subversion/bin/svn" args="cleanup" workingdir="${svndir}"/>

-ディレクトリでsvnクリーンアップを試行します。パスとスペルを再確認しました。

私がテストした1つのコマンドは機能し、このエラーは発生しませんでした。そのコマンドはタッチでした。

<exec command="touch" args="ABC.txt"/>

なぜタッチだけが機能し、他には何も機能しないように見えるのかわかりません。

4

1 に答える 1

0

Re: GrzegorzOledzki のコメント:

正解ですが、理想的な解決策とはほど遠いものの、最終的にこれを支援するアイデアを教えてくれました。

パスの使用に失敗するすべてのコマンドと、機能するコマンドはそうではないことに気付きました。これを念頭に置いて、さらにいくつかのことを試しました。

機能するもの:

<exec command="touch" workingdir="projects" args="ABC.txt"/>
<exec command="svn" args="cleanup" workingdir="${svndir}/Iosdll"/>

これらのパスは、絶対的なものではなく相対的なものでなければなりません:(

まだ機能しなかったこと:

この形式を使用してスクリプトを実行しようとしています (同じエラー)

存在しないスクリプトを実行しようとしています (同じエラー!!!)

複数のexecコマンドを実行しています...トップダウンプログラムのように(最初にのみ実行されます)

どうやら、この ExecScript IO 例外は、ある種のジェネリックがコマンド エラーを実行できないことです。command="path/script" または command="script" workingdir="path" をいじっても、結果は得られませんでした。そこで、/etc/profile (cygwin の bash_profile に相当) に入り、スクリプトへのパスを PATH に追加しました。今、この種の作品。

<exec command="IOSdllScript.bat"/>

編集:Cygwinを使用する場合、スクリプトよりもバッチファイルとしてうまく機能するようです。

CygwinのPATH変数を変更せずにIEでこれを「正しい」方法で行う方法を知りたいです。

于 2009-07-16T14:14:12.137 に答える