page_adsence

2017年9月10日日曜日

Jenkins公式のDockerイメージを使って、プラグインインストール済みのJenkinsイメージを作る

Dockerを使ってJenkinsサーバを立てようと思ったのですが、プラグインをインストールした状態のイメージを自分で作りたくて色々調べたので、その結果を書いていこうと思います。

まず最初に見つけたのが下記のリポジトリのものです。

blacklabelops/jenkins

docker-composeで立ち上げる際に、env_fileを食わせてやることで、プラグインインストール済みのJenkinsサーバが立ち上がるらしいのですが、インストールしたいプラグインを入れても、なぜか上手くいかなかったので別のを探すことに。

引き続き調べていたら、Jenkins公式の配っているイメージでもプラグインをインストール出来ることがわかったので、それを試してみました。

jenkins

FROM jenkins
COPY plugins.txt /usr/share/jenkins/ref/
COPY custom.groovy /usr/share/jenkins/ref/init.groovy.d/custom.groovy
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/ref/plugins.txt

こんな感じで書くとプラグインがインストール出来ると書いてあるのですが、依存関係を自動で解決してくれないので、依存しているプラグインを全部自力で順番通りに書かないといけないということで、ちょっとだけやってみたのですが、現実的ではないということでこれも諦めました。

Jenkinsのコンテナ作って中に入って色々見ていたら、気になるシェルスクリプトを見つけたので、試しに使ってみることにしました。

FROM jenkins
RUN /usr/local/bin/install-plugins.sh git github

こんな感じで、インストールしたいプラグインIDを空白区切りで列挙します。
記載が終わったらビルドして新しいJenkinsのイメージを作ります。

docker build . -t jenkins

続いて、docker-compose.ymlに下記のように指定します。

jenkins:
  image: jenkins
  container_name: jenkins
  ports:
   - "8080:8080"
   - 50000
  volumes_from:
    - volumes
  environment:
    - JAVA_OPTS="-Djenkins.install.runSetupWizard=false"

volumes:
  image: busybox
  container_name: jenkins_data
  volumes:
    - /var/jenkins_home

この中でJenkinsの初回起動時のウィザードを出さないようにしています。
で、

docker-compose up -d

で起動します。

http://localhost:8080/

にアクセスして、Jenkinsのプラグイン管理の画面に行くと、ちゃんとインストールされてました!
DockerHubの方のページには書いてなかったので気づけなかったのですが、githubの方にはちゃんと書いてありました・・・。

jenkinsci/docker

なんにせよこれでプラグインの依存関係を気にせず入れれるようになりました。

2017年8月4日金曜日

IntelliJとVisualVMでScalaのベンチマークを取る

Scalaで作っているAPIサーバがあるのですが、自分が作った部分がリリースされた直後、APIのレスポンスが悪くなりアラート連発という事態が発生。
今回のリリースで対象のAPIサーバをいじったのは自分だけ。
しかし、ソースはレビュー済みで、切り戻し後にもう一度確認してみたのですが、誰が見ても特に重そうという処理はしてなさそうという結論に至りました。

そこで、修正前後のベンチマークを取って比べてみようということに。
最初は「sbt-jmh」を使ってベンチマークを取ろうとしたのですが、うまく行かず・・・。
Javaでプロファイルするのに使っていたVisualVMというものがあって、もしかしたらそれでScalaのプロファイルも出来るかもというアドバイスを貰ったので、早速調べてみると比較的最近の記事が出てきました。

Scalaで書いたProcessing のプログラムを VisualVM でプロファイルする

上の記事を見てScalaのプロファイル取れることがわかったので、早速導入してみた。

VisualVMの入手とインストール

  1. VisualVM にアクセス
  2. Download ボタンをクリック
  3. Mac OS X Application Bundleをクリックしダウンロードしてくる
  4. 落としてきたdmgファイルダブルクリックしてインストール

IntelliJのプラグインの入手と設定

  1. Preferences -> Plugins -> Browse repositories -> 検索窓に「VisualVM Launcher」と入力し、「Install」ボタンをクリック
  2. プラグインのインストールが完了すると、「Restart IntelliJ IDEA」ボタンに切り替わるので、IntelliJを再起動する。
  3. Preferences -> Other Settings -> VisualVM Launcher のメニューをクリックし、
    VisualVM executable: に 「/Applications/VisualVM.app/Contents/MacOS/visualvm」 と入力
  4. それ以外の部分はそのままにして、OKをクリック
  5. 通常の「Run」や「Debug」と同じ様に、「Run With VisualVM」か「Debug With VisualVM」を押すと、アプリが起動する。
    ■ Before

    ■ After
  6. メニューの方も変わっている
    ■Before

    ■After
  7. 後は勝手にVisualVMが起動するので、必要な部分を見ればOK

以上で設定は完了です。