- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
** Jenkinsの抽象化されたjava.io.Fileである FilePath [#o7ffc559]
ビルドのジョブが動くノード((マスターかスレーブか))によって、ワークスペースのパスは異なっていたりします。なのでJenkinsのファイルシステムはjava.io.Fileに似た FilePathというパスが抽象化されたクラスを使用します。以下サンプルコード。
@Override
public boolean perform(AbstractBuild build, Launcher launcher,
BuildListener listener) throws InterruptedException, IOException {
FilePath root = build.getModuleRoot(); // ワークスペースのルート.スレーブでビルドが動くと、他サーバのディレクトリだったりする。
FilePath fromFile = new FilePath(root, "from.txt");
System.out.println(fromFile);
FilePath toFile = new FilePath(new FilePath(build.getRootDir()),
"to.txt"); // ココはビルドのルートで、必ずMasterサーバ上にある
System.out.println(toFile);
fromFile.copyTo(toFile); // こんな感じにノード間でコピーできる。
// (このビルドがスレーブで動く場合、スレーブのワークスペースのファイルが、マスターサーバにコピーされたりする。)
return true;
}
このように動いているサーバを抽象化し、ノード間のコピーもシームレスにできたりします。便利ですね。。
実行結果は
[省略]/workspace/hoge/work/jobs/Test/workspace/from.txt
[省略]/workspace/hoge/work/jobs/Test/builds/2015-09-25_13-12-45/to.txt
となります。これはマスタで動いてしまいましたが、一行目はワークスペースなので場合によっては別ノードのパスになります。逆に二行目はビルドパスなので必ずマスターサーバのパスになります。
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}