テクノロジー · 実用ガイド

Robocopy はコピー成功でも終了コード 1?コピーではなく CI 境界を直す

Robocopy の 0–7 は完了結果、8 以上はコピー失敗です。元のコードとログを直ちに保存し、batch、PowerShell、Jenkins の境界だけで変換します。

オリジナル編集イラスト:Robocopy の 0、1–7、8+ を分類するオリジナル図。
オリジナル編集イラスト:オリジナル図:元の結果を保存してから CI に変換。 Watch at Ease

Robocopy のコード 1 は選択したファイルのコピー成功を意味しますが、Jenkins は通常、非ゼロを失敗として扱います。

直後に元の値を保存し、8 未満を完了、8 以上を失敗として、コピー概要とログを残します。

元の結果をすぐ保存

Robocopy の直後に %ERRORLEVEL% または $LASTEXITCODE を保存します。別の外部 command が値を上書きできます。

copied、FAILED、Mismatch、Extras の summary を保持します。コードは分類、log は原因の証拠です。

0–7 と 8+ を分類

0 は同期済み、1 はコピー成功、2–7 はコピー失敗なしの組合せです。/MIR では extra と mismatch を確認します。

失敗境界は 8 です。非ゼロ全体や狭い 0–3 規則を使いません。

cmd と PowerShell で変換

batch では rc を保存し、rc GEQ 8 なら元の値、そうでなければ 0 を CI に返します。

PowerShell では $LASTEXITCODE を保存して log に出し、8 未満なら 0、8 以上なら rc を返します。

Jenkins で失敗を隠さない

Jenkins の Windows step は通常非ゼロで失敗します。returnStatus: true で比較用の値を受け取れます。

8 未満は CI 成功にできますが log は保持し、8 以上は元の値とともに失敗させます。

コピーを検証して記録

source、destination、件数、代表ファイルを確認します。/MIR や /PURGE の削除は成功コードだけでは安全と証明できません。

command、options、元のコード、CI code、log location を記録し、異常なら停止します。

オリジナル編集イラスト:安全な Robocopy CI wrapper の決定図。
オリジナル編集イラスト:オリジナル図:8 未満は成功、8 以上は失敗。 Watch at Ease