Jenkins Linux版怎样配置
小樊
34
2025-12-20 04:04:10
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 托管(示例单元文件可参考官方文档)
三 初始化与安全加固
- 访问 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。