1.21 jigowatts

Great Scott!

Jenkins で OutOfMemoryError : Java heap space

概要

ある日ジョブがコケてコンソールのログを見たらこのエラーが出てました。Jenkins使ってるとよくあることなのでしょうか。ヒープメモリが足りないのでjenkis.xmlの設定値を変更します。

環境
  • Windos 10
  • Jenkins 2.46.3

jenkins.xml

デフォルトでインストールしてるとJENKINS_HOME直下にあるっぽいです。私はCドライブにインストールしたのでC:\Jenkinsにありました。

f:id:sh_yoshida:20170622235830p:plain

-Xmxには256m(メガバイト)と指定されています。この値を変更して最大のヒープサイズを増やしてみましょう。

  <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

環境によりますが、ひとまず1024mくらいを設定してみたところOutOfMemoryErrorは出なくなったので様子を見てみることに。3週間程度経過してますが、今のところ元気に動いています。

参考

Builds failing with OutOfMemoryErrors - Jenkins - Jenkins Wiki

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins × Slack 実行結果を通知して

概要

Jenkinsでジョブの実行結果をログインして調べるのって面倒ですよね。今回は僕も私もやってみたい「Jenkins × Slack」です。紳士にSlackへ実行結果を通知してもらいましょう。

f:id:sh_yoshida:20170611112658p:plain

環境
  • Windos 10
  • Jenkins 2.46.3
  • Slack
  • Slack Notification Plugin 2.2

Slackを設定する

Slackのメニューから[Apps & Integrations]を選択します。

f:id:sh_yoshida:20170611112232p:plain

「jenkins ci」を検索。

f:id:sh_yoshida:20170611112245p:plain

[Install]を選択。

f:id:sh_yoshida:20170611112341p:plain

既存のチャンネルを選択するか、[create a new channel]から新しいチャンネルを作成します。

f:id:sh_yoshida:20170611112353p:plain

今回は新しく#jenkinsチャンネルを作成しました。

f:id:sh_yoshida:20170611112406p:plain

先ほどの画面に戻り#jenkinsを選択して、[Add Jenkins CI integration]を押下。

f:id:sh_yoshida:20170611112421p:plain

設定情報の[Token]はJenkinsの設定で使うのでコピーしておきましょう。

f:id:sh_yoshida:20170611112435p:plain

Jenkinsを設定する

プラグインのインストー

[Jenkinsの管理]-[プラグインの管理]より利用可能タブで「Slack Notification Plugin」をインストールします。

f:id:sh_yoshida:20170611112447p:plain

プラグインの設定

[Jenkinsの管理]-[システムの管理]より[Global Slack Notifier Settings]で設定していきます。

f:id:sh_yoshida:20170611112500p:plain

[Team Subdomain]は以下の例での「example」の部分を入力。

https://example.slack.com/, your subdomain is 'example'.

[Integration Token]はSlack側で生成されたTokenを入力して、[Integration Token Credential ID]を[なし]にすれば接続できると思います。ただ、警告にあるようにセキュリティリスクがあるようなので、[Integration Token Credential ID]を使ってみます。

f:id:sh_yoshida:20170611121620p:plain

[Integration Token Credential ID]の追加を押下し、Jenkins Credentials Prviderで[種類]を[Secret text]に変更し、[Secret]にSlackのTokenを入力します。IDは適当な名前を入力し、[追加]を押下。

f:id:sh_yoshida:20170611112522p:plain

[Integration Token]を空にして、[Integration Token Credential ID]は先ほど追加したIDを選択します。[Test Connection]を押下してSuccessと表示されれば、Slack側に通知がでます。

f:id:sh_yoshida:20170611112512p:plain

テスト接続の通知はこんな感じ。

f:id:sh_yoshida:20170611112623p:plain

ジョブの設定

通知させたいジョブの[設定]より、[ビルド後の処理の追加]で[Slack Notifications]を追加します。通知させたい内容にチェックを入れて保存しましょう。

f:id:sh_yoshida:20170611112531p:plain

[高度な設定]では、テストのサマリーやジョブ毎の設定にオーバーライドができるようです。

f:id:sh_yoshida:20170611112546p:plain

実行結果

それではビルド実行してみましょう。

f:id:sh_yoshida:20170611112646p:plain

対象のチャンネルにJenkinsからの通知が来ました!

f:id:sh_yoshida:20170611112658p:plain

設定が簡単なのがわかったので、実際のプロジェクトでも連携させてみたくなりますね。
あー、職場にSlack導入されないかなぁ。

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins でGitHubと連携して.NETアプリケーションをビルドするときにパッケージを復元する

概要

言いたいことは全部タイトルで言った!

つーことで、GitHubから.NETのアプリケーションをCloneして、ビルドしようとしたらNuGetのパッケージが見つからないので復元するとこまでやってみました。

f:id:sh_yoshida:20170608234545p:plain

環境
  • Windos 10
  • Jenkins 2.46.3
  • Visual Studio Community 2017
  • NuGet v4.1.0

Jobの設定

ソースコード管理

Gitを選択して、リポジトリURLに適当なリポジトリを入力します。PublicリポジトリをCloneするだけなので認証情報はなし。ブランチはmasterで。

f:id:sh_yoshida:20170608234540p:plain

GitHubリポジトリは仕事で久しぶりにVB.NETを書くことになったので練習がてらに作ったどうでもいいやつです。[Clone or download]のとこでコピー。

f:id:sh_yoshida:20170608234559p:plain

ビルド環境

ワークスペースにCloneされるので[ビルド開始前にワークスペースを削除する]にチェックを入れてみました。Timestamperプラグインもいつの間にか入っていたので、[コンソール出力にタイムスタンプを追加する]にチェック。

f:id:sh_yoshida:20170608234549p:plain

ビルド

パッケージを使っている場合復元してあげる必要があるので、別途NuGet CLIをダウンロードしてc:\toolsに配置してあります。

ダウンロードは以下から。
NuGet Distributions

nuget.exeのv4.1.0をダウンロードしました。

f:id:sh_yoshida:20170609000832p:plain

Windowsバッチコマンドの実行にて、コマンド実行。カレントはワークスペースになっているので、Cloneしたソースコードを対象にrestoreできるってわけですね。

c:\tools\nuget.4.1.exe restore

f:id:sh_yoshida:20170608234550p:plain

あとは前回と同じなので省略します。

f:id:sh_yoshida:20170608234554p:plain

実行結果

ワークスペースソースコードがCloneされて、足りないパッケージも復元されました!

f:id:sh_yoshida:20170608234556p:plain

ビルドとユニットテストも通って青玉でました。ここにたどり着くまでにTry and Errorで19回もビルド実行しているのがバレバレ( ^Д^)σ

f:id:sh_yoshida:20170609002403p:plain




sh-yoshida.hatenablog.com
sh-yoshida.hatenablog.com
sh-yoshida.hatenablog.com