32

バッチ ファイルを使用して C++ プロジェクトを構築する会社に入社したばかりです。バッチはあらゆる種類のことを行い (svn を更新します。現在はジェンキンによって行われています)、ビルド フォルダーを作成し、ビルド後に不要なファイルを削除し、ライブラリ ファイルをビルド フォルダーにコピーします。

私の問題は、そうでない場合でも、Jenkins が常にビルドが成功したと見なすことです。.bat ファイルは、何か問題が発生したときに errormake.txt というファイルを作成します。ジェンキンスにそれを読み取らせ、ビルドを失敗としてマークするにはどうすればよいですか?

また、Jenkins が .bat ファイル内から作成したビルド フォルダーを見つける方法はありますか (バッチ ファイルを呼び出すときに変数を送信する可能性があります)。

これは、.bat ファイルを呼び出すために現在使用している 1 行です。

call "C:\Source\BuildVersion\AppName\build_version.bat"

編集: また、このプロジェクトはいくつかの SVN リポジトリに分割されています。%SVN_REVISION%は空白です。%SVN_REVISION%最初のリポジトリ (メインのリポジトリ) から正しいものを取得するにはどうすればよいですか?

4

6 に答える 6

41

あなたのそれぞれの質問に答えるために -

  • ジョブが実際に失敗した場合でも、Jenkins は常に「SUCCESS」を返します。

    Jenkins は、各「Execute windows batch command」ブロックで実行された最後のコマンドのリターン コードに基づいて、ジョブのステータスを設定します。 最後のコマンドが の場合、 Jenkins はすべて問題ないと判断します (' ' コマンドが正常に実行された場合...)

    copy some.log D:

    copy

    OS に応じて、EXIT xxまたはを使用します。 ここで、'xx' は 0 より大きい整数です。EXIT /B xx

  • ログファイルに基づいて、Jenkins にビルドを失敗としてマークさせるにはどうすればよいですか:

    sdmythos_grで言及されているように、 Text-finder Pluginを使用します。

  • Jenkinsが作成したビルドフォルダーを見つける方法はありますか:

    Jenkins で実行される各スクリプトの環境変数として使用できるパラメーターがいくつかあります。
    これらのパラメーターのリストについては、こちらを参照してください:
    Jenkins Environment Variables

    あなたの質問に:

    • %WORKSPACE%- ワークスペースの絶対パス
    • %BUILD_NUMBER%- 「153」などの現在のビルド番号
    • %BUILD_ID%
      - "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)などの現在のビルド ID

  • 最初のリポジトリから正しい %SVN_REVISION% を取得するにはどうすればよいですか:

    この回答は同じリンクからのものです:

    • %SVN_REVISION%- Subversion ベースのプロジェクトの場合、
      この変数にはモジュールのリビジョン番号が含まれます。
      複数のモジュールが指定されている場合、これは設定されません

それが役立つことを願っています

于 2012-12-21T17:04:08.373 に答える
8

Jenkins は Windows エラー コードを使用して、ビルドが失敗したかどうかを判断します。ビルドが失敗した場合、たとえば「exit /B 1」で、0 以外の値を返す必要があります。

于 2012-12-20T15:13:41.173 に答える
4

私もあなたの質問のほんの一部に答えるつもりです。

使用できるJenkins用のテキストファインダープラグインがあります。 https://wiki.jenkins-ci.org/display/JENKINS/Text-finder+Plugin

ファイルの内容またはコンソール出力に応じて、ビルドの最後にビルドを不安定または失敗としてマークできます。

多分これは役立つかもしれません...

于 2012-12-20T15:17:42.763 に答える
0

質問がかなり古いことは知っていますが、一部の人には役立つかもしれません。次の行を使用する代わりに、bat ファイルを実行するには、

call "C:\Source\BuildVersion\AppName\build_version.bat"

以下の形式を使用できます。

<someRelativeOrAbsolutePath>\<.batFileName> <param1> <param2> <and so on>

JenkinsのBuildセクションのExecute Windows Batch Command内でこの方法でコマンドを実行すると、コマンドの最後のリターン コードが使用されます。それに依存します。また、条件に基づいたエラー コードを返すようにスクリプトを変更する必要はありません。${BUILD_STATUS}

于 2016-10-18T11:35:34.860 に答える