Raspberry Pi に Jenkins をインストールするやり方です :)


注意点

この記事は下記の記事のアーカイブです ;)

https://iganari.hatenablog.com/entry/2021/04/22/025532

今記事の情報は執筆当時のものになります <(. . )>

概要

宅内に簡単なジョブ基盤が欲しいと思っていたところ、使用していない Raspberry Pi があったので Jenkins をインストールしてみようと思いました

結果から書くと、公式ドキュメントの通りにやると出来ます :)

https://www.jenkins.io/doc/book/installing/linux/

実際にやってみる

使用する Raspberry Pi のスペック

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
$ uname -a
Linux raspi 5.10.17-v7+ #1403 SMP Mon Feb 22 11:29:51 GMT 2021 armv7l GNU/Linux
$ cat /proc/version
Linux version 5.10.17-v7+ (dom@buildbot) (arm-linux-gnueabihf-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1403 SMP Mon Feb 22 11:29:51 GMT 2021

Java のインストール

sudo apt update
$ sudo apt search openjdk | grep jre

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

default-jre/stable 2:1.11-71+b1 armhf
default-jre-headless/stable 2:1.11-71+b1 armhf
openjdk-10-jre/stable 10.0.2+13-2 armhf
openjdk-10-jre-headless/stable 10.0.2+13-2 armhf
openjdk-10-jre-zero/stable 10.0.2+13-2 armhf
openjdk-11-jre/stable 11.0.9.1+1-1~deb10u2 armhf
openjdk-11-jre-headless/stable 11.0.9.1+1-1~deb10u2 armhf
openjdk-8-jre/stable 8u212-b01-1+rpi1 armhf
openjdk-8-jre-headless/stable 8u212-b01-1+rpi1 armhf
openjdk-8-jre-zero/stable 8u212-b01-1+rpi1 armhf
openjdk-9-jre/stable 9.0.4+12-4 armhf
openjdk-9-jre-headless/stable 9.0.4+12-4 armhf
openjdk-9-jre-zero/stable 9.0.4+12-4 armhf
sudo apt install openjdk-11-jre
$ java --version
openjdk 11.0.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Raspbian-1deb10u2)
OpenJDK Server VM (build 11.0.9.1+1-post-Raspbian-1deb10u2, mixed mode)

Jenkins のインストール

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
    /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
$ sudo systemctl status jenkins
● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated)
   Active: active (exited) since Tue 2021-04-20 22:50:21 JST; 1min 6s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2062)
   CGroup: /system.slice/jenkins.service

Apr 20 22:50:19 raspi systemd[1]: Starting LSB: Start Jenkins at boot time...
Apr 20 22:50:19 raspi jenkins[3495]: Correct java version found
Apr 20 22:50:19 raspi su[3554]: (to jenkins) root on none
Apr 20 22:50:19 raspi su[3554]: pam_unix(su-l:session): session opened for user jenkins by (uid=0)
Apr 20 22:50:20 raspi su[3554]: pam_unix(su-l:session): session closed for user jenkins
Apr 20 22:50:21 raspi jenkins[3495]: Starting Jenkins Automation Server: jenkins.
Apr 20 22:50:21 raspi systemd[1]: Started LSB: Start Jenkins at boot time.
http://IP_ADDRESS:8080

—> これで Jenkins on Raspberry Pi の基礎構築が完了しました! :)

その他、最低限設定しておいたほうが良いこと

Jenkins の Version

$ sudo cat /var/lib/jenkins/config.xml | grep "version" | grep -v "xml"
  <version>2.277.2</version>

Jenkins CLI

Jenkins には便利な CLI があるので実行出来るようにしておきましょう

http://IP_ADDRESS:8080/cli/
cd /usr/local/bin
sudo wget http://localhost:8080/jnlpJars/jenkins-cli.jar
sudo chmod 0755 jenkins-cli.jar

admin のパスワード

export JENKINS_HOME='/var/lib/jenkins'

cat ${JENKINS_HOME}/secrets/initialAdminPassword

記事中にも書きましたが、admin ユーザ以外の設定を必ずしましょう

ログローテートの設定

Jenkins のログに対してのローテートの設定( /etc/logrotate.d/jenkins )を変更しておきます

/var/log/jenkins/jenkins.log /var/log/jenkins/access_log {
        weekly
        copytruncate
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
}
/var/log/jenkins/*.log
{
    daily
    missingok
    dateext
    rotate 52
    compress
    delaycompress
    notifempty
    create 644 jenkins jenkins
    sharedscripts
    postrotate
        if [ -f /var/run/jenkins ]; then
            kill -USR1 `cat /var/run/jenkins`
        fi
    endscript
}
sudo /usr/sbin/logrotate -dv /etc/logrotate.d/jenkins
sudo /usr/sbin/logrotate -f /etc/logrotate.d/jenkins

Systemd について

/run/systemd/generator.late/jenkins.service
# Automatically generated by systemd-sysv-generator

[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/init.d/jenkins
Description=LSB: Start Jenkins at boot time
Before=multi-user.target
Before=multi-user.target
Before=multi-user.target
Before=graphical.target
After=remote-fs.target
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SuccessExitStatus=5 6
ExecStart=/etc/init.d/jenkins start
ExecStop=/etc/init.d/jenkins stop

まとめ

Raspberry Pi に Jenkins をインストールし起動するやり方を書きました

宅内の簡単な処理を行うジョブ基盤としてしばらく使ってみようと思います

Have fun !! :)

comments powered by Disqus