読者です 読者をやめる 読者になる 読者になる

aspec7's garage

エンジニア生活の中で学んだことの備忘録

Jenkins 2.0 のベータ版と従来バージョンを比較してみる!

Jenkins インフラ

f:id:aspec7:20160318095017j:plain

Jenkins 2.0 beta!

Jenkinsもとうとう2.0になるということで、先日2.0のβ版が公開されました。
Docker版も用意されており、気軽に試せる良い時代になったものです。
今回は簡単に違いを見ていきたいと思います。

https://jenkins.io/2.0/

環境準備

いきなりdocker runでも良いのですが、docker pullからやりました。
以降は、OS Xのdocker-toolbox環境で試しています。

docker pull

公式のリポジトリ指定は、jenkinsci/jenkins:2.0-beta-1になります。

$ docker pull jenkinsci/jenkins:2.0-beta-1
2.0-beta-1: Pulling from jenkinsci/jenkins
fdd5d7827f33: Already exists 
a3ed95caeb02: Pull complete 
0f35d0fe50cc: Already exists 
627b6479c8f7: Already exists 
14d29245dd71: Pull complete 
11cf859bb16c: Pull complete 
8edb70946005: Pull complete 
a3da659e0c5a: Pull complete 
3d9bebe7e5d6: Pull complete 
6f3acdc2edb7: Pull complete 
ff09dda9ceb2: Pull complete 
d2717d88a865: Pull complete 
1a533ee69409: Pull complete 
13453e0541b8: Pull complete 
d492afd0a3d2: Pull complete 
6184b5757a2f: Pull complete 
f97852594005: Pull complete 
cb3cfc1dcb0b: Pull complete 
Digest: sha256:b462f889775860ce9cf04cf144eefa0df77147e593fa331c4a80748c956998f0
Status: Downloaded newer image for jenkinsci/jenkins:2.0-beta-1

docker run

公式のマニュアルに従い起動します。
従来のものと同じです。

$ docker run -p 8080:8080 -p 50000:50000 jenkinsci/jenkins:2.0-beta-1
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
Apr 02, 2016 7:59:04 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Logging initialized @1194ms
Apr 02, 2016 7:59:04 AM winstone.Logger logInternal
INFO: Beginning extraction from war file
Apr 02, 2016 7:59:06 AM org.eclipse.jetty.util.log.JavaUtilLog warn
WARNING: Empty contextPath
Apr 02, 2016 7:59:06 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: jetty-9.2.z-SNAPSHOT
Apr 02, 2016 7:59:07 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
Apr 02, 2016 7:59:08 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started w.@4b672daa{/,file:/var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
Apr 02, 2016 7:59:08 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started ServerConnector@dcfda20{HTTP/1.1}{0.0.0.0:8080}
Apr 02, 2016 7:59:08 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started @5393ms
Apr 02, 2016 7:59:08 AM winstone.Logger logInternal
INFO: Winstone Servlet Engine v2.0 running: controlPort=disabled
Apr 02, 2016 7:59:09 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
Apr 02, 2016 7:59:09 AM hudson.init.impl.InstallUncaughtExceptionHandler init
INFO: Succesfully installed a global UncaughtExceptionHandler.
Apr 02, 2016 7:59:09 AM jenkins.InitReactorRunner$1 onAttained
INFO: Listed all plugins
Apr 02, 2016 7:59:09 AM jenkins.InitReactorRunner$1 onAttained
INFO: Prepared all plugins
Apr 02, 2016 7:59:09 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started all plugins
Apr 02, 2016 7:59:09 AM jenkins.InitReactorRunner$1 onAttained
INFO: Augmented all extensions
Apr 02, 2016 7:59:12 AM hudson.model.UpdateCenter init
INFO: This is a new Jenkins instance. The Plugin Install Wizard will be launched.
Apr 02, 2016 7:59:16 AM jenkins.InitReactorRunner$1 onAttained
INFO: Loaded all jobs
Apr 02, 2016 7:59:16 AM org.jenkinsci.main.modules.sshd.SSHD start
INFO: Started SSHD at port 53290
Apr 02, 2016 7:59:16 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Started Download metadata
Apr 02, 2016 7:59:17 AM jenkins.util.groovy.GroovyHookScript execute
INFO: Executing /var/jenkins_home/init.groovy.d/tcp-slave-agent-port.groovy
Apr 02, 2016 7:59:23 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Apr 02, 2016 7:59:23 AM jenkins.InitReactorRunner$1 onAttained
INFO: Completed initialization
Apr 02, 2016 7:59:23 AM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Apr 02, 2016 7:59:24 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@2f07b78: display name [Root WebApplicationContext]; startup date [Sat Apr 02 07:59:24 UTC 2016]; root of context hierarchy
Apr 02, 2016 7:59:24 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@2f07b78]: org.springframework.beans.factory.support.DefaultListableBeanFactory@45a1f00a
Apr 02, 2016 7:59:24 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@45a1f00a: defining beans [authenticationManager]; root of factory hierarchy
Apr 02, 2016 7:59:24 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@684943c0: display name [Root WebApplicationContext]; startup date [Sat Apr 02 07:59:24 UTC 2016]; root of context hierarchy
Apr 02, 2016 7:59:24 AM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@684943c0]: org.springframework.beans.factory.support.DefaultListableBeanFactory@4b6e629d
Apr 02, 2016 7:59:24 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4b6e629d: defining beans [filter,legacy]; root of factory hierarchy
Apr 02, 2016 7:59:24 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
Apr 02, 2016 7:59:25 AM jenkins.install.SetupWizard <init>
INFO: 

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created anda password generated.
Please use the following password to proceed to installation:

6aedc7ae75c140a1a3a2dd05cb942b5f

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

Apr 02, 2016 7:59:25 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
Apr 02, 2016 7:59:25 AM jenkins.InitReactorRunner$1 onAttained
INFO: Listed all plugins
Apr 02, 2016 7:59:25 AM jenkins.InitReactorRunner$1 onAttained
INFO: Prepared all plugins
Apr 02, 2016 7:59:25 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started all plugins
Apr 02, 2016 7:59:25 AM jenkins.InitReactorRunner$1 onAttained
INFO: Augmented all extensions
Apr 02, 2016 7:59:25 AM jenkins.InitReactorRunner$1 onAttained
INFO: Loaded all jobs
Apr 02, 2016 7:59:25 AM jenkins.InitReactorRunner$1 onAttained
INFO: Completed initialization
Apr 02, 2016 7:59:25 AM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running
--> setting agent port for jnlp
--> setting agent port for jnlp... done
Apr 02, 2016 7:59:29 AM hudson.model.DownloadService$Downloadable load
INFO: Obtained the updated data file for hudson.tools.JDKInstaller
Apr 02, 2016 7:59:29 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Finished Download metadata. 12,761 ms

使ってみる!

管理画面へのアクセス

これも従来と変わりありません。
192.168.99.100は環境に合わせて変えてください。

http://192.168.99.100:8080/

初期セットアップ

2.0では初回起動時にセットアップ画面が出るようになるようです。

パスワード確認

最初に管理パスワードの確認を求められます。

f:id:aspec7:20160403155357p:plain

パスワードは、画面上に記載された場所に保存されていますので、ターミナルから下記のように起動済みのコンテナから参照します。
(ここでのコンテナ名は、serene_borgですが環境に合わせて変更してください。)
得られたパスワードを入力して次の画面に進みます。

$ docker exec serene_borg cat /var/jenkins_home/secrets/initialAdminPassword
6aedc7ae75c140a1a3a2dd05cb942b5f

プラグインのセットアップ

2.0ではセットアップの時にプラグインをインストールできるようです。
推奨のするプラグインを一括でインストールするInstall suggested pluginsと、自分で選んでインストールするSelect plugins to installの2つの方法があります。

f:id:aspec7:20160403155409p:plain

Install suggested plugins

こちらは選択するとすぐに各プラグインのインストールが開始されます。
今回はこちらを選択してセットアップしています。

f:id:aspec7:20160403155645p:plain

Select plugins to istall

こちらはインストール対象を選択してからインストールが開始します。
最初に選択されているのは推奨されるプラグインのようです。

f:id:aspec7:20160403155707p:plain

管理者ユーザーの作成

管理者ユーザーの作成です。
2.0では最初からユーザー作成できます。

f:id:aspec7:20160403155735p:plain

これが終わると、セットアップが終了し、Jenkinsのメインメニューが開きます。

f:id:aspec7:20160403155753p:plain

旧バージョンとの比較

従来バージョン1.655と画面を比較してみます。

メインメニュー

2.0では、最初にユーザーを作成してログイン状態なのですが、従来バージョンはanonymous状態で未ログインです。
My Viewsが2.0の方だけすぐに利用できる状態です。
Jenkinsの管理のアイコンが歯車に変わってますね。
でもぱっと見じゃわからないほど、従来バージョンと同じデザインです。

2.0

f:id:aspec7:20160403155813p:plain

1.655

f:id:aspec7:20160403155830p:plain

ジョブの新規作成

2.0ではUIが一新されています。
選べるものもプラグインがインストールされていることで、最初からPipelineとか選べるようになっています。
これわかりにくいですが、New item name...にプロジェクト名を入れて、対象のプロジェクトスタイルを選択したのち、左下のOKボタンを押せば、作成できます。

2.0

f:id:aspec7:20160403155856p:plain

1.655

f:id:aspec7:20160403155952p:plain

Jenkinsの管理メニュー

こちらもほとんど変わりありません。
2.0では、Global Tool Configurationが増えています。

2.0

f:id:aspec7:20160403160018p:plain

1.655

f:id:aspec7:20160403160037p:plain

プラグインマネージャー

今回のセットアップでは、推奨プラグインを入れていますが、それらプラグインがてんこ盛りです。

2.0

f:id:aspec7:20160403160124p:plain
f:id:aspec7:20160403160150p:plain f:id:aspec7:20160403160203p:plain

1.655

f:id:aspec7:20160403160240p:plain

プロジェクト作成画面

2.0はデザインが変わっていますが、内容は従来のものとそう変わりません。

2.0

f:id:aspec7:20160403160427p:plain

1.655

f:id:aspec7:20160403160521p:plain

プロジェクト作成後のメインメニュー

基本的に同じ作りです。

2.0

f:id:aspec7:20160403160542p:plain

1.655

f:id:aspec7:20160403160554p:plain

プロジェクトのメニュー

こちらも基本的に同じ作りです。

2.0

f:id:aspec7:20160403160614p:plain

1.655

f:id:aspec7:20160403160624p:plain

まとめ

  • 初期セットアップが実装された!
  • 最初からプラグインを自由に選択できる!
  • 最初からユーザー作成できる!
  • 使い勝手は、これまでと変わらず!
  • デザインもほとんど変わらず!(多少フォントや行間などスタイルは調整されてる)



これなら、すでに出版されてるJenkins本も安心して利用できそうですね!