株式会社ナレッジベースの杉山です。
とある場所で外部と接続しているネットワークと開発用ネットワークを分離しました。
その分離については関わっていなかったのですが、暫くしてJenkisでビルドした資材に最新のソースが反映されていないと言う事象が発生しました。
Jenkinsのログを確認してみると、下記のような警告メッセージが出力されていました。
「SubversionサーバのクロックとHudsonのクロックがずれているようです。これによってチェックアウト動作に支障が出る可能性があります。」
確かにSubversionから取得するべきソースがチェックアウトされていません。
確認するとJenkinsが稼働しているサーバとSubversionが稼働しているサーバのシステム時刻にずれが発生していました。
突貫工事でタイムサーバを設置してないのが原因なのはよくわかるのですが、Google先生に質問しても、なかなか納得できる回答が得られません。
と言う訳で、英語も含めて検索してみました。
Jenkinsのサイトで「Moving Hudson to new server out of sync error」を見つけました。
どうも、JenkinsがSebversionに対して、自身のシステム日付を持ってチェックアウトを実施するようです。
Subversionのサーバに対してJenkinsのサーバのシステム時刻が遅れている場合、未来日のソースが取得できない状態になっているようです。
強引にSubversionのリポジトリのURLに「@HEAD」を付けることで、時刻に関係無く最新リビジョンがチェックアウトできるのですが、開発用の端末を含めて時刻を同期するのが正道ですね。
最終的にタイムサーバを設定するこで解決しました。