温馨提示×

Jenkins在Linux环境中如何实现持续集成

小樊
52
2026-01-12 07:57:55
栏目: 智能运维

在 Linux 上落地 Jenkins 持续集成

一 环境准备与安装

  • 安装 Java 11+(Jenkins 运行依赖),例如在 Debian/Ubuntu 上执行:sudo apt update && sudo apt install -y openjdk-11-jdk;在 CentOS/RHEL 上执行:sudo yum install -y java-11-openjdk-devel。完成后用 java -version 校验版本。
  • 安装 Jenkins(RPM/DEB 方式):
    • CentOS/RHEL:
      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 -y jenkins
      sudo systemctl start jenkins && sudo systemctl enable jenkins
    • 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 > /devref
      sudo apt update && sudo apt install -y jenkins
      sudo systemctl start jenkins && sudo systemctl enable jenkins
  • 访问 http://<服务器IP>:8080,首次解锁密码位于 /var/lib/jenkins/secrets/initialAdminPassword,按向导安装推荐插件并创建管理员账户。
  • 可选:使用 Docker 快速启动(适合演示/隔离环境):
    docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
    初始密码:docker exec <container_id> cat /var/jenkins_home/secrets/initialAdminPassword。

二 创建第一个 CI 流水线

  • 安装常用插件:GitPipelineCredentials BindingBlue Ocean(可在“插件管理”中搜索安装)。
  • 在代码仓库根目录新增 Jenkinsfile(示例为 Java + Maven):
    pipeline {
    agent any
    tools {
    maven ‘Maven 3’ // 需在“全局工具配置”中预先配置 Maven 名称
    jdk ‘OpenJDK 11’ // 需在“全局工具配置”中预先配置 JDK 名称
    }
    stages {
    stage(‘Checkout’) { steps { git url: ‘https://github.com/your-org/your-repo.git’, branch: ‘main’ } }
    stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } }
    stage(‘Test’) { steps { sh ‘mvn test’ } }
    stage(‘Archive’) { steps { archiveArtifacts artifacts: ‘/target/*.jar,/target/.war’, fingerprint: true } }
    }
    post {
    always { junit '**/target/surefire-reports/
    .xml’ }
    failure { echo ‘构建失败,请检查日志与测试报告’ }
    success { echo ‘构建与测试通过’ }
    }
    }
  • 在 Jenkins 中新建 Pipeline 任务,选择“Pipeline script from SCM”,配置 Git 仓库与分支,指定 Jenkinsfile 路径(默认为根目录)。

三 触发方式与通知

  • 触发构建
    • 轮询 SCM(简单但不够实时):在“构建触发器”中配置 Poll SCM,如 H/5 * * * *(每 5 分钟检查一次变更)。
    • Webhook(推荐):在代码托管平台(如 GitHub/GitLab)配置 Webhook,指向 http://<JENKINS_URL>/github-webhook/(或 GitLab 等效路径),Jenkins 需安装对应插件(如 GitHub plugin)。
  • 构建后操作与通知
    • 归档产物:Archive the artifacts(如 target/.jar|.war)。
    • 远程部署:使用 Publish Over SSH 将产物传输至目标主机并执行重启脚本(如 Tomcat 部署)。
    • 邮件通知:配置 Extended E-mail Notification(SMTP、SSL/TLS、发件人、收件人、模板等)。

四 安全与运维要点

  • 运行用户与权限:Jenkins 默认以 jenkins 用户运行,涉及工作空间、部署目录、日志目录时需确保该用户具备读写权限;必要时使用 chown/chmod 或组权限调整。
  • 网络安全:仅开放必要端口(如 8080),生产环境建议通过 反向代理 + HTTPS(Nginx/Apache)对外暴露;云主机需配置安全组放行。
  • 日志与排错:查看 /var/log/jenkins.log 或使用 journalctl -u jenkins;常见故障包括端口冲突、权限不足、插件依赖缺失、Java 版本不兼容等。
  • 高可用与扩展:按需配置 Agent/分布式构建 提升并发能力;定期更新插件与核心版本,遵循最小权限原则与凭据托管。

0