Jenkins には Docker 公式のイメージ があったりして、セットアップが非常に容易になっています。
で、いざ docker run
して立ち上げてみたら、いきなり Plugin をインストールしろやみたいな画面になるし、仕方ないなぁお勧めプラグインでもインストールしてやるかみたいな感じでボタン押したら、大量のプラグインのインストールが走ってずいぶん時間待たされることになりました。
こんなのは全然軽量じゃない、もっと迅速に Jenkins と遊びたいんや!! というわけで、お勧めプラグインをインストール済のイメージを作りましょう。
お勧めプラグイン一覧の作成
お勧めプラグインをインストールしておくためにはお勧めプラグイン一覧が必要なわけですが、これは Jenkins の Jenkins Script Console で以下のような Groovy スクリプトを書いて実行すれば良いです。
Jenkins Script Console は、http://
Jenkins.instance.pluginManager.plugins.each{ plugin -> println ("${plugin.getShortName()}") }
この実行結果を、plugins.txt
とでもして保存しておきましょう。
Dockerfile の作成
Dockerfile はこんなかんじ。ミソは、install-plugins.sh
で、これは Docker 公式の Jenkins イメージに入っているプラグインインストール用のスクリプトです。
引数としてプラグイン名を渡してやれば良い。
ソースを読む限りでは、依存関係も勝手に解決してくれるっぽかった。
FROM jenkins:2.19.4 COPY plugins.txt /usr/share/jenkins/ref/ RUN /usr/local/bin/install-plugins.sh $(cat /usr/share/jenkins/ref/plugins.txt)
Docker を立ち上げましょう
これを以下のようにビルドして立ち上げれば、プラグインインストール済の Jenkins が動き出します。
$ docker build -t kiririmode/jenkins . $ docker run --rm -p 8080:8080 kiririmode/jenkins
plugins.txt
2.19.4 の plugins.txt はこんなかんじ。
bouncycastle-api cloudbees-folder structs junit antisamy-markup-formatter pam-auth windows-slaves display-url-api mailer ldap token-macro external-monitor-job icon-shim matrix-auth script-security matrix-project build-timeout credentials workflow-step-api plain-credentials credentials-binding timestamper workflow-api workflow-basic-steps resource-disposer ws-cleanup ant gradle pipeline-milestone-step workflow-support pipeline-build-step jquery-detached pipeline-input-step ace-editor workflow-scm-step scm-api workflow-cps pipeline-stage-step workflow-job pipeline-graph-analysis pipeline-rest-api handlebars momentjs pipeline-stage-view ssh-credentials git-client git-server workflow-cps-global-lib branch-api workflow-multibranch durable-task workflow-durable-task-step workflow-aggregator github-api git github github-branch-source github-organization-folder mapdb-api subversion ssh-slaves email-ext