温馨提示×

Ubuntu Jenkins如何持续集成

小樊
43
2026-01-01 02:49:55
栏目: 智能运维

在 Ubuntu 上用 Jenkins 搭建持续集成

一 环境准备与安装

  • 安装 Java(Jenkins 依赖 Java,建议 OpenJDK 17OpenJDK 11
    • 示例:sudo apt update && sudo apt install -y openjdk-17-jdk
    • 验证:java -version
  • 安装 Jenkins(Debian 软件源方式,适配 Ubuntu 22.04/24.04
    • 导入密钥:curl -fsSL https://pkg.jenkins.io/debian/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 binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
    • 安装与启动:sudo apt update && sudo apt install -y jenkins && sudo systemctl start jenkins && sudo systemctl enable jenkins
  • 访问与初始化
    • 浏览器打开:http://<服务器IP>:8080
    • 初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    • 首次进入可选择“安装推荐插件”,随后创建管理员账户。

二 安全与网络配置

  • 防火墙放行端口(如使用 UFW
    • 放行 8080:sudo ufw allow 8080
    • 查看状态:sudo ufw status
  • 端口冲突处理
    • 修改端口:编辑 /etc/default/jenkins,将 HTTP_PORT=8080 改为如 8081
    • 或编辑 systemd 服务:sudo systemctl edit jenkins(在 [Service] 下添加 Environment=JENKINS_PORT=8081)
    • 使配置生效:sudo systemctl daemon-reload && sudo systemctl restart jenkins
    • 放行新端口:sudo ufw allow 8081
  • 远程访问建议配合 Nginx/Apache 反向代理与 HTTPS,避免直接暴露 8080。

三 创建第一个 Pipeline 任务

  • 安装常用插件(Manage Jenkins → Manage Plugins)
    • Git pluginPipelinePipeline: Stage ViewCredentials Binding
  • 新建任务
    • New Item → 输入名称 → 选择 Pipeline → OK
  • 配置源码与触发器
    • 在 Pipeline 配置中选择 Pipeline script from SCM → SCM 选 Git
    • 填写仓库 URL,添加 SSH 或用户名/密码凭据
    • 指定 Jenkinsfile 路径(如:Jenkinsfile 在项目根目录则留空或填 Jenkinsfile
  • 示例 Jenkinsfile(多语言通用模板)
    pipeline {
      agent any
      tools {
        // 若已全局工具配置,可在此指定名称;否则使用系统 PATH
        // jdk 'openjdk-17'
        // nodejs 'node-18'
      }
      environment {
        // 可在此设置全局环境变量,如 APIFOX_TOKEN
      }
      stages {
        stage('Checkout') {
          steps { git url: 'git@github.com:your-org/your-repo.git', branch: 'main' }
        }
        stage('Build') {
          steps { sh 'make build || ./mvnw package -DskipTests' }
        }
        stage('Test') {
          steps { sh 'make test || ./mvnw test' }
        }
        stage('Archive') {
          steps { archiveArtifacts artifacts: '**/target/*.jar,**/dist/*.zip', fingerprint: true }
        }
      }
      post {
        success { echo 'Build SUCCESS' }
        failure { echo 'Build FAILED' }
      }
    }
    
  • 保存后点击 Build Now,在 Stage View 查看执行进度与日志。

四 触发方式与通知

  • 触发方式
    • 手动触发:在任务页面点击 Build Now
    • 轮询 SCM:在“构建触发器”中配置 Poll SCM,如 H/5 * * * *(每 5 分钟检查一次变更)
    • Webhook(推荐):在代码托管平台(GitHub/GitLab/Gitee)配置 Webhook,指向 http://<JENKINS_URL>/github-webhook/(或 GitLab 的对应路径),实现推送即构建
  • 构建后操作
    • 归档制品(如 .jar/.zip)、发布测试报告、发送通知(邮件/企业微信/钉钉等插件)
  • 凭据与安全
    • 使用 SSH 密钥用户名/密码管理源码与部署凭据,避免明文存放
    • 对 Webhook 建议启用 CSRF 保护认证令牌

五 常见问题与排错要点

  • GPG 签名错误
    • 现象:NO_PUBKEY 9B7D32F2D50582E6
    • 处理:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9B7D32F2D50582E6,再 sudo apt update
  • 端口被占用
    • 现象:启动失败或端口冲突
    • 处理:修改 /etc/default/jenkinsHTTP_PORT,或 systemctl edit jenkins 设置 JENKINS_PORT,并放行新端口后重启
  • Java 版本不匹配
    • 现象:启动报错或插件不可用
    • 处理:确认安装 OpenJDK 17/11,必要时用 update-alternatives 切换默认 Java,并设置 JAVA_HOME
  • Git 权限失败
    • 现象:Host key verification failed 或无法拉取
    • 处理:切换到 jenkins 用户生成 SSH 密钥(sudo su - jenkins -s /bin/bash),将公钥添加到代码平台;或在 Jenkins 凭据中配置正确的 SSH 私钥。

0