Jenkinsインストールメモ

# はじめに
Windows11上のWSL(Ubuntu)にコンテナ版Jenkinsをインストールした時のメモ書きです。
テスト用にとりあえず動かせればいいという前提で環境構築します。

# 環境情報

Windows11
Ubuntu 20.04.6 LTS (Focal Fossa)
Docker 25.0.3

# Jenkinsインストール

## Dockerイメージ
以下に提供されているイメージを使用します。
[DockerHub - jenkins/jenkins](https://hub.docker.com/r/jenkins/jenkins)

## イメージのpull

```shell-session
$ docker pull jenkins/jenkins:lts-jdk17
```

インストール時点(2024年4月)でのJenkins Version: 2.440.3

## ディレクトリ作成

Jenkinsの各種データはコンテナ内の/var/jenkins_homeディレクトリ下に保持されるようなので、このディレクトリにローカルのディレクトリをマウントするようにします。(コンテナ再作成してもデータ引き継げるように)

ここでは、`/home/user01/Jenkins/jenkins_home`というディレクトリを作成し、パーミッションを777に設定しておきます。(本来であればパーミッションやUIDは適切に管理するべきところですが、今回はテスト用でとりあえず動かすこと優先なので手っ取り早く権限付与してます)

```shell-session
$ ls -la /home/user01/Jenkins | grep jenkins_home
drwxrwxrwx 17 user01 user01 4096 Apr 21 13:30 jenkins_home
```

## コンテナ作成

```shell-session
$ docker run --name myjenkins -d -p 8080:8080 -p 50000:50000 -v /home/user01/Jenkins/jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk17
```

ログ確認

```shell-session
$ docker logs -f myjenkins
Running from: /usr/share/jenkins/jenkins.war
webroot: /var/jenkins_home/war
2024-04-21 01:12:43.973+0000 [id=1]     INFO    winstone.Logger#logInternal: Beginning extraction from war file
2024-04-21 01:12:44.472+0000 [id=1]     WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2024-04-21 01:12:44.519+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: jetty-10.0.20; built: 2024-01-29T20:46:45.278Z; git: 3a745c71c23682146f262b99f4ddc4c1bc41630c; jvm 17.0.10+7
2024-04-21 01:12:44.689+0000 [id=1]     INFO    o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2024-04-21 01:12:44.720+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: Session workerName=node0
2024-04-21 01:12:45.089+0000 [id=1]     INFO    hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2024-04-21 01:12:45.179+0000 [id=1]     INFO    o.e.j.s.handler.ContextHandler#doStart: Started w.@4d192aef{Jenkins v2.440.3,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
2024-04-21 01:12:45.188+0000 [id=1]     INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@78365cfa{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2024-04-21 01:12:45.197+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: Started Server@5644dc81{STARTING}[10.0.20,sto=0] @1555ms
2024-04-21 01:12:45.198+0000 [id=27]    INFO    winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2024-04-21 01:12:45.336+0000 [id=35]    INFO    jenkins.InitReactorRunner$1#onAttained: Started initialization
2024-04-21 01:12:45.347+0000 [id=44]    INFO    jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2024-04-21 01:12:45.901+0000 [id=48]    INFO    jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2024-04-21 01:12:45.905+0000 [id=35]    INFO    jenkins.InitReactorRunner$1#onAttained: Started all plugins
2024-04-21 01:12:45.909+0000 [id=35]    INFO    jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2024-04-21 01:12:46.033+0000 [id=35]    INFO    jenkins.InitReactorRunner$1#onAttained: System config loaded
2024-04-21 01:12:46.033+0000 [id=47]    INFO    jenkins.InitReactorRunner$1#onAttained: System config adapted
2024-04-21 01:12:46.034+0000 [id=47]    INFO    jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2024-04-21 01:12:46.035+0000 [id=36]    INFO    jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2024-04-21 01:12:46.051+0000 [id=61]    INFO    hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2024-04-21 01:12:46.361+0000 [id=36]    INFO    jenkins.install.SetupWizard#init:

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

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

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

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

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

2024-04-21 01:12:59.430+0000 [id=35]    INFO    jenkins.InitReactorRunner$1#onAttained: Completed initialization
2024-04-21 01:12:59.454+0000 [id=26]    INFO    hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
2024-04-21 01:13:00.166+0000 [id=61]    INFO    h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2024-04-21 01:13:00.167+0000 [id=61]    INFO    hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
```

ログを確認すると初期パスワードが出力されているのでそちらをメモっておきます。
(上の「xxxxxxxx」でマスキングしている部分)

## Jenkins初期設定

ブラウザから`http://localhost:8080`にアクセスします。

パスワードを求められるので起動時ログに出力されているパスワードを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/2bd5c01e-62f7-f0ba-880a-786970f215ba.png)

Install suggested pluginsを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/6aaa8a06-f65c-ab99-41e7-70229da62934.png)

いくつかPluginのインストールが行われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/7413cf6c-1a04-bf42-13bf-8008a2a32e95.png)

ガイドに従って管理者ユーザーを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/62eca68f-c622-ae6c-968c-a05dc9139c3c.png)

Jenkins URLを指定します(今回はデフォルトのまま)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/bf550106-5878-dab2-011e-4d57800846ea.png)

初期設定完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/48814683-4cc2-bd44-cef1-eff91550551f.png)

あとは管理コンソールから適宜カスタマイズ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/be85cc9a-0e3b-8d24-74f7-f3866fddbe87.png)