Linux 上配置 Jenkins 的完整步骤
一 准备环境
- 安装 Java 11 或更高版本(Jenkins 长期支持版本),并验证:java -version。
- 开放防火墙端口 8080/TCP(或自定义端口),确保浏览器可访问。
- 建议准备一个具有 sudo 权限的非 root 运维账号,用于安装与维护。
- 如需离线环境,提前下载 JDK 安装包 与 Jenkins 安装包/WAR,并规划插件离线安装方案。
二 安装方式
- APT 系列(Debian/Ubuntu)
- 导入密钥与仓库
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 update && sudo apt install jenkins -y
sudo systemctl start jenkins && sudo systemctl enable jenkins - 验证
sudo systemctl status jenkins(应为 active/running)
- 导入密钥与仓库
- YUM/DNF 系列(RHEL/CentOS/Fedora)
- 添加仓库与密钥
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.key - 安装与启动
sudo yum install jenkins -y(或 dnf install jenkins)
sudo systemctl start jenkins && sudo systemctl enable jenkins - 验证
sudo systemctl status jenkins
- 添加仓库与密钥
- 通用 WAR 包方式(任何发行版)
- 准备目录与 WAR
sudo mkdir -p /var/lib/jenkins
sudo mv jenkins.war /opt/ - 启动(前台/后台)
java -jar /opt/jenkins.war –httpPort=8080 –webroot=/var/lib/jenkins/war
nohup java -jar /opt/jenkins.war –httpPort=8080 > /var/log/jenkins.log 2>&1 & - 建议后续用 systemd 托管(示例单元文件可参考官方文档)
- 准备目录与 WAR
三 初始化与安全加固
- 访问 http://服务器IP:8080,获取初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword,完成解锁。
- 选择 Install suggested plugins 安装常用插件,或按需选择;随后创建 管理员账户 与 Jenkins URL(如通过反向代理,请填写外部访问地址)。
- 防火墙放行:
- firewalld:sudo firewall-cmd –permanent –add-port=8080/tcp && sudo firewall-cmd –reload
- ufw:sudo ufw allow 8080 && sudo ufw enable
- 安全建议:
- 遵循 最小权限原则,使用 角色/权限插件 与 外部认证(如 LDAP/SSO)。
- 凭据使用 Jenkins 凭据存储,避免明文。
- 通过 反向代理 + HTTPS(Nginx/Apache)加固通信安全。
- 定期 更新 Jenkins 与插件,降低漏洞风险。
四 全局工具与第一个流水线
- 全局工具配置(Manage Jenkins → Global Tool Configuration)
- 指定 JDK 11(自动安装或填写已安装路径)。
- 如构建 Java 项目,安装并配置 Maven(示例版本 3.9.1),保存。
- 创建第一个任务(Pipeline)
- 新建任务 → 选择 Pipeline → 在 “Pipeline” 部分选择 Pipeline script from SCM → SCM 选 Git。
- 填写仓库 URL(HTTPS 或 SSH),选择已配置的 凭证。
- 指定分支(如 */main),Script Path 默认为 Jenkinsfile。
- 示例 Jenkinsfile(声明式)
pipeline {
agent any
tools { maven ‘Maven 3.9.1’ jdk ‘OpenJDK 11’ }
stages {
stage(‘Checkout’) { steps { git url: ‘git@github.com:org/repo.git’, branch: ‘main’ } }
stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } }
stage(‘Test’) { steps { sh ‘mvn test’ } }
stage(‘Deploy’) { steps { sh ‘echo Deploy step (to be implemented)’ } }
}
} - 触发方式
- 简单轮询:SCM Poll 使用 cron 表达式(如 **H/5 * * * *** 每 5 分钟)。
- 推荐:在 GitHub/GitLab 配置 Webhook,实现代码推送即触发。
五 常见问题与排障
- 权限问题(Permission denied)
- 构建目录/部署目录:确保 jenkins 用户对路径有读写权限(chown/chmod 或将 jenkins 加入目标组并赋权)。
- Git SSH:切换到 jenkins 用户生成密钥(ssh-keygen),将公钥添加到 Git 服务;Jenkins 凭证选择 SSH Username with private key。
- Docker:将 jenkins 加入 docker 组(sudo usermod -aG docker jenkins),重启 Jenkins 后再试。
- 端口冲突或未放行
- 修改端口:java -jar jenkins.war –httpPort=9090;或调整 systemd 服务参数。
- 放行防火墙(见第三部分)。
- 服务无法启动/启动慢
- 查看日志:tail -f /var/log/jenkins.log 或 journalctl -u jenkins;常见原因为 Java 版本不兼容、端口被占用、目录权限不足。
- 离线环境
- 使用 jenkins-plugin-manager.jar 批量下载插件及其依赖,拷入 /var/lib/jenkins/plugins 后重启;初始化向导可选择 Skip plugin installation。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1476006.html