Pipelineスクリプトのparallelを利用すると並列処理を簡単に実装できます。
ただ、並列度を制御する機構はparallelにはありません。
そのため、parallelを実装したものの実行されるジョブが多くなるとJenkinsが落ちてしまうという事態になってしまったので、
何かないかと探して利用したのが、Throttle Concurrent Builds Pluginでした。
実装方法は、GitHubのREADMEに記載のある通りですが、
node()が実行されるたびにワークスペースが変わってしまうので、
Pipelineの設計によってはワークスペースを固定するような一手間が必要になります。
Pipeline Syntax
Throttle Concurrent Builds Plugin - Jenkins - Jenkins Wiki
jenkinsci/throttle-concurrent-builds-plugin · GitHub
2017年12月30日土曜日
2017年7月29日土曜日
jspc-maven-pluginは5分しかコンパイルできない
compilationTimeoutがデフォルト値として、5分になっているからでした。
公開されているWebのドキュメントは古いので、設定できる内容はソースを確認した方がよいです。
余談ですが、compileThreadsというJSPをコンパイルする時のスレッド数を設定するものもありました。
とりあえず2にしてみたところ、時間が半分程度になりました。
ビルドするマシンパワーに余裕があるのであれば、うまく調整するとよいと思います。
Maven plugin to do JSP Compliation
公開されているWebのドキュメントは古いので、設定できる内容はソースを確認した方がよいです。
余談ですが、compileThreadsというJSPをコンパイルする時のスレッド数を設定するものもありました。
とりあえず2にしてみたところ、時間が半分程度になりました。
ビルドするマシンパワーに余裕があるのであれば、うまく調整するとよいと思います。
Maven plugin to do JSP Compliation
2016年11月12日土曜日
SonarLintとPleiadesプラグインで利用しているライブラリが競合する
SonarLintの解析実行時にPleiadesのライブラリが有効になっていて、
SonarLintが存在しないメソッドを呼び出してエラーになっていました。
Eclipse 4.3 Kepler Pleiades All in OneにSonarLint2.0.1をインストールするという組み合わせで発生しました。
どちらもApache Commons IOライブラリを利用していて、Pleiadesは1.4を使用していました。
そこで、Pleiadesのライブラリを1.4と互換性のある2.2に差し替えて、
解析ができるようになりました。
Commons IO – Upgrade from 2.1 to 2.2
SonarLintが存在しないメソッドを呼び出してエラーになっていました。
Eclipse 4.3 Kepler Pleiades All in OneにSonarLint2.0.1をインストールするという組み合わせで発生しました。
どちらもApache Commons IOライブラリを利用していて、Pleiadesは1.4を使用していました。
そこで、Pleiadesのライブラリを1.4と互換性のある2.2に差し替えて、
解析ができるようになりました。
Commons IO – Upgrade from 2.1 to 2.2
2015年12月28日月曜日
Antで複数のmkdirタスクを実行する。
AntのScriptタスクを利用して、ディレクトリのパスをPathConvertで変換した後に、そのディレクトリを作成します。
build.xml
実行結果
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<target name="pathConvertor" description="">
<pathconvert property="convertedDir">
<dirset dir=".">
<patternset id="convdir">
<include name="**/java/**"/>
<include name="**/resources/**"/>
</patternset>
</dirset>
<mapper>
<filtermapper>
<replacestring from="java" to="replaced"/>
<replacestring from="resources" to="replaced"/>
</filtermapper>
</mapper>
</pathconvert>
<script language="javascript"><![CDATA[
var toDir = project.getProperty("convertedDir");
var dirs = toDir.split(";");
var size = dirs.length;
var mkdir = project.createTask("mkdir");
for (var i = 0; i < size; i++) {
var targetDir = dirs[i];
mkdir.setDir(new java.io.File(targetDir));
mkdir.perform();
}
]]></script>
</target>
</project>
実行結果
e:\work\ant>ant pathConvertor
Buildfile: e:\work\ant\build.xml
pathConvertor:
[mkdir] Created dir: e:\work\ant\dir\replaced
[mkdir] Created dir: e:\work\ant\path\to\example\replaced
[mkdir] Created dir: e:\work\ant\src\main\replaced
[mkdir] Created dir: e:\work\ant\src\test\replaced
BUILD SUCCESSFUL
Total time: 2 seconds
e:\work\ant>tree
フォルダー パスの一覧
ボリューム シリアル番号は 00000200 A0FE:B066 です
E:.
├─dir
│ ├─java
│ ├─replaced
│ └─resources
├─path
│ └─to
│ └─example
│ ├─java
│ └─replaced
└─src
├─main
│ ├─java
│ ├─replaced
│ └─resources
└─test
├─java
├─replaced
└─resources
2015年12月27日日曜日
某ブラウザゲームの画面をスッキリさせる。
D/M/Mの右側に出るレコメンドを消します。
上記をブラウザのユーザースタイルシートとして設定します。
div#ntg-recommend { display: none; } span.slide-trg { display: none; } div.list-pickupgame { display: none; }
上記をブラウザのユーザースタイルシートとして設定します。
2015年6月28日日曜日
2015年7月(夏)開始アニメ新番組私的録画メモ
新しく始まるアニメの個人的な録画予約のメモ。
チェックしている放送局は在京キー局とBS、AT-X、TOKYO MX、チバテレビ。
WORKING3期、水島努監督の監獄学園に期待しています。
最後に、情報源は以下のサイトです。ありがとうごとうございます。
GIGZAZINE 2015年夏季開始の新作アニメ一覧
チェックしている放送局は在京キー局とBS、AT-X、TOKYO MX、チバテレビ。
曜日 | タイトル | 初回放送日時 | 放送局 |
---|---|---|---|
月 | 赤髪の白雪姫 | 7月6日(月) 24:00 | TOKYO MX |
To LOVEる-とらぶる-ダークネス 2nd | 7月6日(月) 24:30 | TOKYO MX | |
のんのんびより りぴーと | 7月6日(月) 26:05 | テレビ東京 | |
火 | それが声優! | 7月7日(火) 23:00 | TOKYO MX |
木 | がっこうぐらし | 7月9日(木) 23:30 | TOKYO MX |
金 | アイドルマスター シンデレラガールズ 2nd SEASON | 7月17日(金) 24:00 | TOKYO MX |
監獄学園 プリズンスクール | 7月10日(金) 25:05 | TOKYO MX | |
Fate/kaleid liner プリズマイリヤ ツヴァイ ヘルツ! | 7月24日(金) 25:40 | TOKYO MX | |
土 | WORKING!!! | 7月4日(土) 24:30 | TOKYO MX |
戦姫絶唱シンフォギアGX | 7月4日(土) 25:00 | TOKYO MX |
WORKING3期、水島努監督の監獄学園に期待しています。
最後に、情報源は以下のサイトです。ありがとうごとうございます。
GIGZAZINE 2015年夏季開始の新作アニメ一覧
ラベル:
アニメ
2015年4月26日日曜日
fluent-logger-javaについていくつかのこと。
GitHub fluent/fluent-logger-java
バージョンは、0.3.1です。
org.fluentd.logger.FluentLoggerFactory#getLogger(String, String, int, int, int, Reconnector)
そこで、org.fluentd.logger.sender.Senderインターフェースを実装したクラスを以下のように設定することで、
デフォルトのorg.fluentd.logger.sender.RawSocketSenderから変更できます。
諸事情でFluentdにログを送信できない場合、このクラスに切り替えるようなロジックを実装するといった利用が考えられます。
org.fluentd.logger.sender.ExponentialDelayReconnector
指数関数的に遅延しながら再接続を試みる物のようです。
これとは別に、org.fluentd.logger.sender.Reconnectorインターフェースを実装することで、
独自の動作を実装できます。
以下のメソッドを利用することで、独自の動作をさせることができます。
org.fluentd.loggerFluentLogger#getLogger(String, String, int, int, int, Reconnector)
バージョンは、0.3.1です。
Fluentdに送信する実装を変更できる。
ファクトリークラス内が下記のようになっています。org.fluentd.logger.FluentLoggerFactory#getLogger(String, String, int, int, int, Reconnector)
Properties props = System.getProperties();
if (!props.containsKey(Config.FLUENT_SENDER_CLASS)) {
// create default sender object
sender = new RawSocketSender(host, port, timeout, bufferCapacity, reconnector);
} else {
String senderClassName = props.getProperty(Config.FLUENT_SENDER_CLASS);
try {
sender = createSenderInstance(senderClassName, new Object[] { host, port, timeout, bufferCapacity });
} catch (Exception e) {
throw new RuntimeException(e);
}
}
そこで、org.fluentd.logger.sender.Senderインターフェースを実装したクラスを以下のように設定することで、
デフォルトのorg.fluentd.logger.sender.RawSocketSenderから変更できます。
System.setProperty(Config.FLUENT_SENDER_CLASS, "com.example.HogeSender")
他にも、org.fluentd.logger.sender.NullSenderというクラスは、空振りする動作をします。諸事情でFluentdにログを送信できない場合、このクラスに切り替えるようなロジックを実装するといった利用が考えられます。
再接続方法を変更できる。
デフォルトの実装は、org.fluentd.logger.sender.ExponentialDelayReconnector
指数関数的に遅延しながら再接続を試みる物のようです。
これとは別に、org.fluentd.logger.sender.Reconnectorインターフェースを実装することで、
独自の動作を実装できます。
以下のメソッドを利用することで、独自の動作をさせることができます。
org.fluentd.loggerFluentLogger#getLogger(String, String, int, int, int, Reconnector)
登録:
投稿 (Atom)