Linux 下安装 Jenkins
对于数个 Linux 发行版,都有 Jenkins 的安装程序。
前置条件
最低硬件要求:
-
256 MB 运行内存;
-
1 GB 硬盘空间(尽管如果以Docker容器的形式运行Jenkins,建议最小为10GB)。
建议小团队的硬件配置:
-
4 GB 以上的 RAM;
-
50 GB 以上的硬盘空间。
全面的硬件建议:
- 硬件:请参阅 硬件建议 页面。
软件要求:
- Java:请参阅 Java 要求 页面;
- Web 浏览器:请参阅 Web 浏览器兼容性 页面;
- 对于 Windows 操作系统:Windows 支持政策;
- 对于 Linux 操作系统:Linux 支持政策;
- 对于 Servlet 容器: Servlet 容器支持政策。
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
教程,以更好地了解 systemd
和 systemctl
命令的好处。
该软件包的安装将:
-
将 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 实例时,系统会要求咱们使用自动生成的密码解锁他。
- 浏览到
http://localhost:8080
(或咱们在安装 Jenkins 时为其配置的那个端口),然后等待 Unlock 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
来在控制台中打印密码,而不必进入容器。
- 在 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 会要求您创建第一个管理员用户。
-
当 Create First Admin User 页面出现时,请在相应字段中指定管理员用户的详细信息,然后单击 Save and Finish;
-
当出现 Jenkins is ready 的页面时,点击 Start using Jenkins。
注意:
- 此页面可能表明 Jenkins 几乎准备就绪! 相反,如果是这样,请单击 Restart;
- 如果一分钟后页面没有自动刷新,请使用你的网络浏览器手动刷新页面。
- 如果需要,使用咱们刚刚创建的用户的凭据登录到 Jenkins,咱们就可以开始使用 Jenkins 了!
更新 Jenkins
参考:New Jenkins Container And Update Jenkins (Docker)
- 得到新版 Jenkins WAR 文件的具体下载地址;
比如:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.407/jenkins.war
- 登入 Jenkins 所在的 Docker 容器;
# 以 `-u 0` 来使用主机的 root 账号
docker container exec -u 0 -it jenkins-blueocean bash
- 使用第 1 步中所拷贝的 URI 地址,下载更新;
curl https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.407/jenkins.war -o jenkins.war
- 将其移动到正确位置;
mv ./jenkins.war /usr/share/jenkins
注意:可以先
cp /usr/share/jenkins/jenkins.war /usr/share/jenkins/jenkins.war.bakup
备份一下。
- 修改
jenkins.war
的权限;
chown jenkins:jenkins /usr/share/jenkins/jenkins.war
- 退出容器并重启该容器。
# 退出容器(在容器里)
exit
# 重启该容器(从咱们的服务器)
docker container restart jenkins-blueocean
大功告成!