Ubnutu22.04にJenkinsをインストールする方法
はじめに
今回はUbuntu22.04にJenkinsをインストールする方法についてご教示したいと思います!
実はかなり苦労しました。。。
これは普通の方法だとインストールできないんですね。。。
要はよくQiita記事で出回っているような方法だとインストールできないってことです。。。
確実にコケます。。。
そのため、記事にした背景があります。
また、Ubuntu22.04だとJava8をインストールすることはできますが、Java8に対応したJenkinsには対応しておりません。Java11に対応したJenkinsをインストールしないと起動しないので注意が必要です。(既存環境でJava8に対応したJenkinsを使用していたため、はじめにJava8をインストールしたが途中で互換性がないことがわかり、アンインストールしました)
苦労したのがどのリポジトリが対応しているのかに四苦八苦しました。(ある意味、格闘記録になります。。。)
手順
- Ubuntu22.04(Linux)にログインし、下記のコマンドを実行し、rootユーザーに切り替えましょう。(その方が作業はスムーズに進むため)
sudo su
- まずはJavaをインストールします。
apt -y install openjdk-11-jdk
- 念のため、バージョンの確認はしておきましょう
java --version
- 下記のコマンドを実行する。
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
これはJenkinsを使用するための公開鍵を引っ張りだす形となります。
- 下記のコマンドを実行する。
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
このコマンドは、Jenkins のパッケージをインストールする際に、APT(Advanced Packaging Tool。Debian向けに開発されたパッケージ管理システム)が認識する外部リポジトリ(Jenkinsが提供するDebianパッケージのリポジトリ)を追加するために使われます。
- 下記のコマンドを実行し、パッケージをアップデートする。
apt update
- Jenkinsのパッケージがアップデートされたことを確認する。(一部省略)
Ign:5 https://pkg.jenkins.io/debian-stable binary/ InRelease
Get:6 https://pkg.jenkins.io/debian-stable binary/ Release [2044 B]
Get:7 https://pkg.jenkins.io/debian-stable binary/ Release.gpg [833 B]
Get:9 https://pkg.jenkins.io/debian-stable binary/ Packages [25.4 kB]
Fetched 137 kB in 1s (137 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
- さあ、いざJenkinsをインストールしようと下記のコマンドを実行。
sudo apt install Jenkins
ところが「このパッケージは使えないよ」と怒られた。
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package Jenkins
- 下記のコマンドを実行し、Jenkinsを使用するための公開鍵を取得する。
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
警告が表示されるが、同時に"OK"が表示される事を確認する。
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
- 下記のコマンドを実行する。
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
JenkinsのDebianのAPTリポジトリをシステムのAPTソースリストに追加することを目的にしています。
- 下記のコマンドを実行する。
sudo apt update
下記の警告が出ますが、一旦進めます。
W: http://pkg.jenkins.io/debian-stable/binary/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
- 下記のJenkinsインストールコマンドを実行する。
sudo apt install jenkins
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
jenkins is already the newest version (2.414.1).
The following packages were automatically installed and are no longer required:
adwaita-icon-theme fontconfig gtk-update-icon-cache hicolor-icon-theme
humanity-icon-theme libasyncns0 libcairo-gobject2 libcairo2 libdatrie1
libdeflate0 libflac8 libgail-common libgail18 libgdk-pixbuf-2.0-0
libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgl1-mesa-glx libgtk2.0-0
libgtk2.0-bin libgtk2.0-common libjbig0 libogg0 libopus0 libpango-1.0-0
libpangocairo-1.0-0 libpangoft2-1.0-0 libpixman-1-0 libpulse0 librsvg2-2
librsvg2-common libsndfile1 libthai-data libthai0 libtiff5 libvorbis0a
libvorbisenc2 libwebp7 libxcb-render0 libxcursor1 libxdamage1
linux-aws-6.2-headers-6.2.0-1010 ubuntu-mono
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
- 下記が表示されるので、"y"を入力し、Enterキーを押下する。
Do you want to continue? [Y/n] y
- 下記のコマンドを実行し、Jenkinsがアクティブであることを確認する。
sudo systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor prese>
Active: active (running) since Thu 2023-09-07 15:00:28 UTC; 23min ago
Main PID: 368 (java)
Tasks: 36 (limit: 1121)
Memory: 209.2M
CPU: 24.721s
CGroup: /system.slice/jenkins.service
mq368 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/>
Sep 07 15:00:12 ip-10-2-0-197 jenkins[368]: ***********************************>
Sep 07 15:00:12 ip-10-2-0-197 jenkins[368]: ***********************************>
Sep 07 15:00:12 ip-10-2-0-197 jenkins[368]: WARNING: An illegal reflective acce>
Sep 07 15:00:12 ip-10-2-0-197 jenkins[368]: WARNING: Illegal reflective access >
Sep 07 15:00:12 ip-10-2-0-197 jenkins[368]: WARNING: Please consider reporting >
Sep 07 15:00:12 ip-10-2-0-197 jenkins[368]: WARNING: Use --illegal-access=warn >
Sep 07 15:00:12 ip-10-2-0-197 jenkins[368]: WARNING: All illegal access operati>
Sep 07 15:00:28 ip-10-2-0-197 jenkins[368]: 2023-09-07 15:00:28.327+0000 [id=29>
Sep 07 15:00:28 ip-10-2-0-197 jenkins[368]: 2023-09-07 15:00:28.354+0000 [id=22>
Sep 07 15:00:28 ip-10-2-0-197 systemd[1]: Started Jenkins Continuous Integratio>
lines 1-20/20 (END)
やっとインストール出来ました!!
- 下記のコマンドを実行し、8080ポートを許可する。
sudo ufw allow 8080
- 設定が更新されたことを確認する。
Rules updated
Rules updated (v6)
- 下記のコマンドを実行し、SSH接続を許可する。
sudo ufw allow ssh
- 設定が更新されたことを確認する。
Rules updated
Rules updated (v6)
- 下記のコマンドを実行し、ufw (Uncomplicated Firewall) というLinuxシステム用のファイアウォールを有効にする。
sudo ufw enable
- コマンドを実行後、下記の表示がされるので"y"を入力し、Enterキーを押下する。
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
下記が表示されれば、問題ないです!
Firewall is active and enabled on system startup
- 下記のコマンドを実行し、utfのステータスを確認する。
sudo ufw status
下記が表示されれば、問題ないです!
Status: active
To Action From
-- ------ ----
8080 ALLOW Anywhere
22/tcp ALLOW Anywhere
8080 (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
- 下記のコマンドを実行し、JenkinsのWebインターフェースへの最初のアクセス時のパスワードを確認する。
cat /var/lib/jenkins/secrets/initialAdminPassword
※通常、Jenkinsのインストールが完了すると、initialAdminPassword という名前のファイルが /var/lib/jenkins/secrets/ ディレクトリ内に作成され、その中にランダムに生成されたパスワードが保存されます。JenkinsのWeb UIにアクセスして初めてセットアップを行う際には、このファイルの内容を入力して認証を行います。
- ブラウザでJenkinsに接続するため、ブラウザを開き、アドレスバーに下記の内容を入力する。(GoogleChromeやmicrosoft Edgeでも何でも良いです)
http://グローバルIPアドレス:8080/
※もし、AWS EC2や仮想マシンにグローバルIPを紐づけていない場合は設定しましょう。
- 画像のように問題なく、Jenkinsの画面が表示されれば、構築は完了です!!
Discussion