温馨提示×

Jenkins在Linux上怎样配置持续集成

小樊
37
2025-12-12 06:12:51
栏目: 智能运维

在 Linux 上配置 Jenkins 持续集成

一 环境准备与安装

  • 安装 Java:Jenkins 2.357+ 要求 Java 11+,建议安装 OpenJDK 11。示例:Ubuntu/Debian 执行 sudo apt install openjdk-11-jdk;CentOS/RHEL 执行 sudo yum install java-11-openjdk-devel。验证:java -version。
  • 添加 Jenkins 仓库并安装:
    • Debian/Ubuntu:
      wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
      sudo sh -c ‘echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’
      sudo apt update && sudo apt install jenkins
    • 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 jenkins
  • 启动与开机自启:sudo systemctl start jenkins && sudo systemctl enable jenkins。
  • 防火墙放行:
    • Ubuntu/Debian:sudo ufw allow 8080
    • CentOS/RHEL:sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload
  • 访问初始化页面:打开浏览器访问 http://<服务器IP>:8080,获取初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword,完成解锁、安装推荐插件与创建管理员。

二 全局工具与系统配置

  • 全局工具配置(Manage Jenkins → Global Tool Configuration):安装并配置 JDK 11MavenGit(建议使用自动安装或系统已装版本,便于多版本管理)。
  • 系统配置(Manage Jenkins → Configure System):设置 Jenkins URL管理员邮箱Maven 全局 settings.xml邮件通知(SMTP) 等。
  • 常用插件:安装 Git pluginMaven Integration pluginPipelineEmail ExtensionPublish Over SSH(如需远程部署)等,避免安装过多无用插件以减少兼容与性能问题。

三 创建任务与流水线示例

  • Freestyle 项目(适合简单构建/测试/归档):
    • 源码管理:选择 Git,填写仓库 URL 与凭证。
    • 构建触发器:选择 轮询 SCM(如 H/5 * * * * 每5分钟检查一次)或配置 Webhook(见下一节)。
    • 构建步骤:Invoke top-level Maven targets,命令如 clean package
    • 构建后操作:Archive the artifacts(如 target/*.jar)、Publish JUnit test result report。
  • Pipeline 项目(推荐,可版本化管理流程):在代码根目录放置 Jenkinsfile,示例:
    pipeline {
    agent any
    stages {
    stage(‘Checkout’) { steps { git url: ‘https://github.com/your-org/your-project.git’, branch: ‘main’ } }
    stage(‘Build’) { steps { sh ‘mvn clean package -DskipTests’ } }
    stage(‘Test’) { steps { sh ‘mvn test’ } }
    stage(‘Deploy’) { steps { sh ‘mvn deploy’ } }
    }
    post {
    always { cleanWs() }
    success { echo ‘Build succeeded.’ }
    failure { echo ‘Build failed.’ }
    }
    }
    在 Jenkins 中新建 Pipeline 任务,选择 “Pipeline script from SCM”,指向上述仓库与 Jenkinsfile。

四 触发方式与通知部署

  • 自动触发:
    • Webhook:在代码托管平台(如 GitHub/GitLab)配置 Webhook,指向 http://<JENKINS_URL>/github-webhook/(或对应插件端点),实现 push 即构建
    • 轮询 SCM:在“构建触发器”中使用 Poll SCM 定时检查变更(适合无法开放公网 Webhook 的场景)。
  • 通知:在“构建后操作”配置 Email Extension,设置 SMTP(如 QQ 邮箱:smtp.qq.com,端口 465/SSL,使用授权码),自定义失败/成功模板与收件人。
  • 远程部署(示例):安装 Publish Over SSH,在系统配置中添加目标服务器 SSH 信息,在任务“构建后操作”中传输 WAR/JAR 并执行重启脚本(如 Tomcat 的 stop/start 或 systemd 服务)。

五 安全与运维最佳实践

  • 安全加固:启用 基于角色的访问控制(RBAC)、最小权限;Git 使用 SSH 密钥Personal Access Token;限制 代理节点CSRF 保护;对外仅暴露必要端口。
  • 性能与磁盘:在“系统管理 → 系统配置 → 高级”调整 工作空间/构建记录根目录 到大磁盘;在任务中配置 丢弃旧构建(保留天数/最大个数);必要时调大 JVM 堆(如 -Xms/-Xmx),避免 OOM。
  • 高可用与扩展:引入 Agent 节点 做分布式构建;按项目/团队划分 节点标签工具版本;定期 备份 $JENKINS_HOME 与升级稳定版。

0