温馨提示×

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)
    1. 导入密钥与仓库
      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
    2. 安装与启动
      sudo apt update && sudo apt install jenkins -y
      sudo systemctl start jenkins && sudo systemctl enable jenkins
    3. 验证
      sudo systemctl status jenkins(应为 active/running)
  • YUM/DNF 系列(RHEL/CentOS/Fedora)
    1. 添加仓库与密钥
      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
    2. 安装与启动
      sudo yum install jenkins -y(或 dnf install jenkins)
      sudo systemctl start jenkins && sudo systemctl enable jenkins
    3. 验证
      sudo systemctl status jenkins
  • 通用 WAR 包方式(任何发行版)
    1. 准备目录与 WAR
      sudo mkdir -p /var/lib/jenkins
      sudo mv jenkins.war /opt/
    2. 启动(前台/后台)
      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 &
    3. 建议后续用 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

0