Java/Jenkins/プラグイン開発のTIPS集/FilePath
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
** Jenkinsの抽象化されたjava.io.Fileである FilePath [#o7f...
ビルドのジョブが動くノード((マスターかスレーブか))によっ...
@Override
public boolean perform(AbstractBuild build, Launcher ...
BuildListener listener) throws InterruptedExc...
FilePath root = build.getModuleRoot(); // ワーク...
FilePath fromFile = new FilePath(root, "from.txt");
System.out.println(fromFile);
FilePath toFile = new FilePath(new FilePath(build...
"to.txt"); // ココはビルドのルートで、必...
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_1...
となります。これはマスタで動いてしまいましたが、一行目は...
**ファイル出力すると [#x0297ccb]
プラグインからファイルを出力したいときがありますが、たと...
File file = new File("/tmp/fullpath.txt");
file.createNewFile();
などと書くと、ファイルの書き出し先は、マスターサーバの上...
そのビルドがスレーブで実行されていても、です。これを、ス...
ファイルシステムを抽象化した仕組みである FilePath クラス...
FilePath moduleRoot = build.getModuleRoot(); ←そのプロジ...
などとして参照を得ることができますが、ここにはそのプロジ...
マスターで実行したときとスレーブで実行したときに違う値が...
FileCallableインタフェースは 環境に応じたFileクラスへの参...
実際にファイル出力するサンプルプログラムを作ってみました...
public String[] invoke(File f, VirtualChannel channel);
メソッドに渡されてくる引数 f がFilePathが指している場所へ...
** サンプルコード [#h8a3f9e0]
サンプルコード:
FilePath moduleRoot = build.getModuleRoot();
File rootDir = build.getRootDir();
FilePath rootDirPath = new FilePath(rootDir);
FilePath workspace = build.getWorkspace();
File artifactsDir = build.getArtifactsDir();
FilePath artifactsDirPath = new FilePath(artifactsDir);
listener.getLogger().println(moduleRoot);
listener.getLogger().println(rootDir);
listener.getLogger().println(rootDirPath);
listener.getLogger().println(workspace);
listener.getLogger().println(artifactsDir);
listener.getLogger().println(artifactsDirPath);
try {
// Fileを返すメソッドなので、マスターのディレクトリ...
File file = new File(build.getRootDir(), "buildDir.t...
listener.getLogger().println(file.getAbsolutePath());
file.createNewFile();
// おなじくFileを操作しているので、マスターのディレ...
File file2 = new File("/tmp/fullpath.txt");
listener.getLogger().println(file2.getAbsolutePath());
file2.createNewFile();
moduleRoot = build.getModuleRoot();
String[] result = moduleRoot.act(new F());
listener.getLogger().println(result[0]);
listener.getLogger().println(result[1]);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
private static class F implements FileCallable<String[]> {
private static final long serialVersionUID = 1L;
public String[] invoke(File f, VirtualChannel channel)
throws IOException, InterruptedException {
File file = new File(f, "root.txt"); // f はF...
file.createNewFile();
File file2 = new File("/tmp/fullpath2.txt"); // ...
file2.createNewFile();
return new String[] { file.getAbsolutePath(),
file2.getAbsolutePath() };
}
}
について、マスターとスレーブで実行した結果は以下のように...
マスター:
Started by user anonymous
Building on master in workspace /var/lib/jenkins/workspa...
/var/lib/jenkins/workspace/Test3/var/lib/jenkins/workspa...
/var/lib/jenkins/jobs/Test3/builds/5
/var/lib/jenkins/jobs/Test3/builds/5
/var/lib/jenkins/workspace/Test3
/var/lib/jenkins/jobs/Test3/builds/5/archive
/var/lib/jenkins/jobs/Test3/builds/5/archive
/var/lib/jenkins/jobs/Test3/builds/5/buildDir.txt
/tmp/fullpath.txt
/var/lib/jenkins/workspace/Test3/root.txt
/tmp/fullpath2.txt
Finished: SUCCESS
スレーブ:
Started by user anonymous
Building remotely on www (Linux) in workspace /opt/jenki...
/opt/jenkins/workspace/Test3/opt/jenkins/workspace/Test3...
/var/lib/jenkins/jobs/Test3/builds/4
/var/lib/jenkins/jobs/Test3/builds/4
/opt/jenkins/workspace/Test3 <- slave
/var/lib/jenkins/jobs/Test3/builds/4/archive
/var/lib/jenkins/jobs/Test3/builds/4/archive
/var/lib/jenkins/jobs/Test3/builds/4/buildDir.txt <- sl...
/tmp/fullpath.txt <- slaveで実行されたがマスタ...
/opt/jenkins/workspace/Test3/root.txt <- slaveに出力
/tmp/fullpath2.txt <- slaveに出力
Finished: SUCCESS
このようにFileの参照を返すメソッドについてはスレーブで実...
実際にスレーブでビルドが動いても、ファイルはマスタのサー...
こうみると、ワークスペースはスレーブにも存在するが、ビル...
----
この記事は
#vote(おもしろかった[1],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
** Jenkinsの抽象化されたjava.io.Fileである FilePath [#o7f...
ビルドのジョブが動くノード((マスターかスレーブか))によっ...
@Override
public boolean perform(AbstractBuild build, Launcher ...
BuildListener listener) throws InterruptedExc...
FilePath root = build.getModuleRoot(); // ワーク...
FilePath fromFile = new FilePath(root, "from.txt");
System.out.println(fromFile);
FilePath toFile = new FilePath(new FilePath(build...
"to.txt"); // ココはビルドのルートで、必...
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_1...
となります。これはマスタで動いてしまいましたが、一行目は...
**ファイル出力すると [#x0297ccb]
プラグインからファイルを出力したいときがありますが、たと...
File file = new File("/tmp/fullpath.txt");
file.createNewFile();
などと書くと、ファイルの書き出し先は、マスターサーバの上...
そのビルドがスレーブで実行されていても、です。これを、ス...
ファイルシステムを抽象化した仕組みである FilePath クラス...
FilePath moduleRoot = build.getModuleRoot(); ←そのプロジ...
などとして参照を得ることができますが、ここにはそのプロジ...
マスターで実行したときとスレーブで実行したときに違う値が...
FileCallableインタフェースは 環境に応じたFileクラスへの参...
実際にファイル出力するサンプルプログラムを作ってみました...
public String[] invoke(File f, VirtualChannel channel);
メソッドに渡されてくる引数 f がFilePathが指している場所へ...
** サンプルコード [#h8a3f9e0]
サンプルコード:
FilePath moduleRoot = build.getModuleRoot();
File rootDir = build.getRootDir();
FilePath rootDirPath = new FilePath(rootDir);
FilePath workspace = build.getWorkspace();
File artifactsDir = build.getArtifactsDir();
FilePath artifactsDirPath = new FilePath(artifactsDir);
listener.getLogger().println(moduleRoot);
listener.getLogger().println(rootDir);
listener.getLogger().println(rootDirPath);
listener.getLogger().println(workspace);
listener.getLogger().println(artifactsDir);
listener.getLogger().println(artifactsDirPath);
try {
// Fileを返すメソッドなので、マスターのディレクトリ...
File file = new File(build.getRootDir(), "buildDir.t...
listener.getLogger().println(file.getAbsolutePath());
file.createNewFile();
// おなじくFileを操作しているので、マスターのディレ...
File file2 = new File("/tmp/fullpath.txt");
listener.getLogger().println(file2.getAbsolutePath());
file2.createNewFile();
moduleRoot = build.getModuleRoot();
String[] result = moduleRoot.act(new F());
listener.getLogger().println(result[0]);
listener.getLogger().println(result[1]);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
private static class F implements FileCallable<String[]> {
private static final long serialVersionUID = 1L;
public String[] invoke(File f, VirtualChannel channel)
throws IOException, InterruptedException {
File file = new File(f, "root.txt"); // f はF...
file.createNewFile();
File file2 = new File("/tmp/fullpath2.txt"); // ...
file2.createNewFile();
return new String[] { file.getAbsolutePath(),
file2.getAbsolutePath() };
}
}
について、マスターとスレーブで実行した結果は以下のように...
マスター:
Started by user anonymous
Building on master in workspace /var/lib/jenkins/workspa...
/var/lib/jenkins/workspace/Test3/var/lib/jenkins/workspa...
/var/lib/jenkins/jobs/Test3/builds/5
/var/lib/jenkins/jobs/Test3/builds/5
/var/lib/jenkins/workspace/Test3
/var/lib/jenkins/jobs/Test3/builds/5/archive
/var/lib/jenkins/jobs/Test3/builds/5/archive
/var/lib/jenkins/jobs/Test3/builds/5/buildDir.txt
/tmp/fullpath.txt
/var/lib/jenkins/workspace/Test3/root.txt
/tmp/fullpath2.txt
Finished: SUCCESS
スレーブ:
Started by user anonymous
Building remotely on www (Linux) in workspace /opt/jenki...
/opt/jenkins/workspace/Test3/opt/jenkins/workspace/Test3...
/var/lib/jenkins/jobs/Test3/builds/4
/var/lib/jenkins/jobs/Test3/builds/4
/opt/jenkins/workspace/Test3 <- slave
/var/lib/jenkins/jobs/Test3/builds/4/archive
/var/lib/jenkins/jobs/Test3/builds/4/archive
/var/lib/jenkins/jobs/Test3/builds/4/buildDir.txt <- sl...
/tmp/fullpath.txt <- slaveで実行されたがマスタ...
/opt/jenkins/workspace/Test3/root.txt <- slaveに出力
/tmp/fullpath2.txt <- slaveに出力
Finished: SUCCESS
このようにFileの参照を返すメソッドについてはスレーブで実...
実際にスレーブでビルドが動いても、ファイルはマスタのサー...
こうみると、ワークスペースはスレーブにも存在するが、ビル...
----
この記事は
#vote(おもしろかった[1],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: