Linux 下安装 Jenkins

对于数个 Linux 发行版,都有 Jenkins 的安装程序。

前置条件

最低硬件要求:

  • 256 MB 运行内存;

  • 1 GB 硬盘空间(尽管如果以Docker容器的形式运行Jenkins,建议最小为10GB)。

建议小团队的硬件配置:

  • 4 GB 以上的 RAM;

  • 50 GB 以上的硬盘空间。

全面的硬件建议:

软件要求:

Debian/Ubuntu

在 Debian 和基于 Debian 的发行版,如 Ubuntu,咱们可以通过 apt 安装 Jenkins。

长期支持发布版本

长期支持发布版本,LTS(Long-Term Support) release 每 12 周从常规版本中选出一个作为该时间段的稳定版本。他可以从 debian-stable apt 仓库 中安装。

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
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
sudo apt-get update
sudo apt-get install jenkins

每周发布版本

每周都会有一个新的版本,向用户和插件开发者提供错误修复和功能。他可以从 debian apt 仓库 中安装。

curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins

从 Jenkins 2.335 和 Jenkins 2.332.1 开始,软件包的配置采用了 systemd,而不是老式的 System V init。参见 DigitalOcean 社区 systemd 教程,以更好地了解 systemdsystemctl 命令的好处。

该软件包的安装将:

  • 将 Jenkins 设置为系统启动时启动的守护程序。请运行 systemctl cat jenkins 了解更多细节;

  • 创建一个 jenkins 用户来运行这个服务;

  • 将控制台日志输出到 systemd-journald。如果咱们正对 Jenkins 进行故障排除,请运行 journalctl -u jenkins.service

  • 产生有着比如 JENKINS_HOME 等启动配置参数的 /lib/systemd/system/jenkins.service

  • 将 Jenkins 设置为监听 8080 端口。用咱们的浏览器访问这个端口,开始配置。

如果 Jenkins 因为某个端口被使用而无法启动,运行 systemctl edit jenkins 并添加以下内容:

[Service]
Environment="JENKINS_PORT=8081"

这里选择了 8081,但咱们也可以设置另一个可用的端口。

Java 的安装

Jenkins 需要 Java 才能运行,但某些发行版默认不包含他,并且 某些 Java 版本与 Jenkins 不兼容

咱们可以使用多种 Java 实现。 OpenJDK 是目前最流行的,我们将在本指南中使用他。

请使用以下命令更新 Debian apt 软件库,安装 OpenJDK 11,并检查安装情况:

sudo apt update
sudo apt install openjdk-11-jre
java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-post-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2, mixed mode, sharing)

为什么使用 apt 而不是 apt-get 或其他命令?apt 命令从 2014 年起就开始使用了。他的命令结构与 apt-get 类似,但其创建目的是为了让典型用户有更愉快的体验。简单的软件管理任务,如安装、搜索和删除,用 apt 更容易。

Fedora

咱们可以通过 dnf 来安装 Jenkins。咱们需要先把 Jenkins 网站上的 Jenkins 资源库添加到软件包管理器中。

长期支持发布版本

长期支持发布版本,LTS(Long-Term Support) release 每 12 周从常规版本中选出一个作为该时间段的稳定版本。他可以从 redhat-stable yum 仓库安装。

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo dnf upgrade
# Add required dependencies for the jenkins package
sudo dnf install java-11-openjdk
sudo dnf install jenkins
sudo systemctl daemon-reload

每周发布版本

每周都会有一个新的版本,向用户和插件开发者提供错误修复和功能。他可以从 redhat yum 仓库安装。

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
sudo dnf upgrade
# Add required dependencies for the jenkins package
sudo dnf install java-11-openjdk
sudo dnf install jenkins

启动 Jenkins

咱们可以用以下命令,使 Jenkins 服务在系统启动时启动:

sudo systemctl enable jenkins

咱们可以用以下命令启动 Jenkins 服务:

sudo systemctl start jenkins

咱们可以使用以下命令检查 Jenkins 服务的状态:

sudo systemctl status jenkins

如果一切设置正确,咱们应该看到这样的输出:

Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-11-13 16:19:01 +03; 4min 57s ago

如果安装了防火墙,则必须将 Jenkins 添加为例外。咱们必须将下面脚本中的 YOURPORT 更改为咱们要使用的端口。端口 8080 是最常见的。

YOURPORT=8080
PERM="--permanent"
SERV="$PERM --service=jenkins"

firewall-cmd $PERM --new-service=jenkins
firewall-cmd $SERV --set-short="Jenkins ports"
firewall-cmd $SERV --set-description="Jenkins port exceptions"
firewall-cmd $SERV --add-port=$YOURPORT/tcp
firewall-cmd $PERM --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

Red Hat/Alma/Rocky

咱们可以通过 yum 在 Red Hat Enterprise Linux、Alma Linux、Rocky Linux、Oracle Linux 和其他基于 Red Hat 的发行版上安装 Jenkins。

咱们需要选择 Jenkins 长期支持版本或 Jenkins 每周版本。

长期支持发布版本

长期支持发布版本,LTS(Long-Term Support) release 每 12 周从常规版本中选出一个作为该时间段的稳定版本。他可以从 redhat-stable yum 仓库安装。

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo dnf upgrade
# Add required dependencies for the jenkins package
sudo dnf install java-11-openjdk
sudo dnf install jenkins
sudo systemctl daemon-reload

每周发布版本

每周都会有一个新的版本,向用户和插件开发者提供错误修复和功能。他可以从 redhat yum 仓库安装。

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
sudo dnf upgrade
# Add required dependencies for the jenkins package
sudo dnf install java-11-openjdk
sudo dnf install jenkins

启动 Jenkins

咱们可以用以下命令,使 Jenkins 服务在系统启动时启动:

sudo systemctl enable jenkins

咱们可以用以下命令启动 Jenkins 服务:

sudo systemctl start jenkins

咱们可以使用以下命令检查 Jenkins 服务的状态:

sudo systemctl status jenkins

如果一切设置正确,咱们应该看到这样的输出:

Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-11-13 16:19:01 +03; 4min 57s ago

如果安装了防火墙,则必须将 Jenkins 添加为例外。咱们必须将下面脚本中的 YOURPORT 更改为咱们要使用的端口。端口 8080 是最常见的。

YOURPORT=8080
PERM="--permanent"
SERV="$PERM --service=jenkins"

firewall-cmd $PERM --new-service=jenkins
firewall-cmd $SERV --set-short="Jenkins ports"
firewall-cmd $SERV --set-description="Jenkins port exceptions"
firewall-cmd $SERV --add-port=$YOURPORT/tcp
firewall-cmd $PERM --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

安装后设置向导

在使用上述程序之一(使用 Jenkins Operator 的安装除外)下载、安装和运行 Jenkins 后,安装后的设置向导开始。

这个设置向导带咱们完成几个快速的 "一次性" 步骤,以解锁 Jenkins、使用插件对其进行定制,并创建第一个管理员用户,咱们可以通过他继续访问 Jenkins。

解锁 Jenkins

当咱们首次访问新的 Jenkins 实例时,系统会要求咱们使用自动生成的密码解锁他。

  1. 浏览到 http://localhost:8080(或咱们在安装 Jenkins 时为其配置的那个端口),然后等待 Unlock Jenkins 页面出现。

解锁 Jenkins

  1. 从 Jenkins 控制台的日志输出,复制自动生成的字母数字密码(在两组星号之间)。

Jenkins 控制台的日志输出

注意

  • 命令:sudo cat /var/lib/jenkins/secrets/initialAdminPassword 将在控制台打印密码;

  • 如果你在 Docker 中使用官方的jenkins/jenkins 镜像运行 Jenkins,你可以使用 sudo docker exec ${CONTAINER_ID 或 CONTAINER_NAME} cat /var/jenkins_home/secrets/initialAdminPassword 来在控制台中打印密码,而不必进入容器。

  1. Unlock Jenkins 页面上,将此密码粘贴到 Administrator password 字段中,然后单击 Continue

注意

  • Jenkins 控制台日志指出了还可以获得该密码的位置(在 Jenkins 主目录中)。在新安装的 Jenkins 上必须在设置向导中输入这个密码,然后才能访问 Jenkins 的主用户界面。如果你碰巧跳过了安装向导中的后续用户创建步骤,这个密码也可以作为默认的管理员账户密码(用户名为 "admin")。

使用插件定制 Jenkins

解锁 Jenkins 后,会出现 Customize Jenkins 页面。作为初始设置的一部分,咱们可以在此处安装任意数量的有用插件。

点击给出的两个选项之一:

  • Install suggested plugins - 安装建议的插件集,这些插件是基于最常见的使用情况;
  • Select plugins to install - 选择最初要安装哪一组插件。当你第一次访问插件选择页面时,建议的插件被默认选择。

如果咱们不确定需要什么插件,就选择 Install suggested plugins。咱们可以在以后的时间点,通过 Jenkins 中的 Manage Jenkins > Plugins 页面安装(或删除)额外的 Jenkins 插件。

安装向导会显示正在配置的 Jenkins 及咱们选择的一组正在安装的 Jenkins 插件的进度。此过程可能需要几分钟时间。

创建首个管理员用户

最后,在 使用插件自定义 Jenkins 后,Jenkins 会要求您创建第一个管理员用户。

  1. Create First Admin User 页面出现时,请在相应字段中指定管理员用户的详细信息,然后单击 Save and Finish

  2. 当出现 Jenkins is ready 的页面时,点击 Start using Jenkins

注意

  • 此页面可能表明 Jenkins 几乎准备就绪! 相反,如果是这样,请单击 Restart
  • 如果一分钟后页面没有自动刷新,请使用你的网络浏览器手动刷新页面。
  1. 如果需要,使用咱们刚刚创建的用户的凭据登录到 Jenkins,咱们就可以开始使用 Jenkins 了!

更新 Jenkins

参考:New Jenkins Container And Update Jenkins (Docker)

  1. 得到新版 Jenkins WAR 文件的具体下载地址;

比如:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.407/jenkins.war

  1. 登入 Jenkins 所在的 Docker 容器;
# 以 `-u 0` 来使用主机的 root 账号
docker container exec -u 0 -it jenkins-blueocean bash
  1. 使用第 1 步中所拷贝的 URI 地址,下载更新;
curl https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.407/jenkins.war -o jenkins.war
  1. 将其移动到正确位置;
mv ./jenkins.war /usr/share/jenkins

注意:可以先 cp /usr/share/jenkins/jenkins.war /usr/share/jenkins/jenkins.war.bakup 备份一下。

  1. 修改 jenkins.war 的权限;
chown jenkins:jenkins /usr/share/jenkins/jenkins.war
  1. 退出容器并重启该容器。
# 退出容器(在容器里)
exit

# 重启该容器(从咱们的服务器)
docker container restart jenkins-blueocean

大功告成!