温馨提示×

Jenkins在Ubuntu上如何设置自动构建

小樊
48
2025-11-16 18:50:11
栏目: 智能运维

在 Ubuntu 上设置 Jenkins 自动构建

一 环境准备与安装

  • 安装 Java 17(推荐):sudo apt update && sudo apt install -y openjdk-17-jdk
  • 导入 Jenkins 仓库并安装:
    wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
    sudo sh -c ‘echo deb https://pkg.jenkins.io/debian/ binary/ > /etc/apt/sources.list.d/jenkins.list’
    sudo apt update && sudo apt install -y jenkins
  • 启动并设置开机自启:sudo systemctl enable --now jenkins
  • 查看初始管理员密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  • 访问控制台:打开浏览器进入 http://<服务器IP>:8080,完成解锁与插件安装。

二 全局工具与插件配置

  • 插件建议:安装 GitPipelineJUnitHTML Publisher 等常用插件(Manage Jenkins → Manage Plugins)。
  • 全局工具路径:Manage Jenkins → Global Tool Configuration,添加并设置 JDK 17GitMaven(或 Node.js)路径,便于任务直接调用。

三 创建任务与自动触发方式

  • 新建任务:New Item → 选择 Freestyle projectPipeline
  • 源码管理:选择 Git,填写仓库 URL 与凭据,指定分支(如 main)。
  • 构建触发器(常用三种):
    1. 定时轮询 SCM:Build periodically,示例 **H/5 * * * *** 表示每 5 分钟检查一次变更并触发构建。
    2. GitHub Webhook:项目中勾选 Build when a change is pushed to GitHub;在 GitHub 仓库 Settings → Webhooks 添加 Payload URL:http://:8080/github-webhook/,事件选 Just the push event
    3. GitLab Webhook:项目中勾选 GitLab webhook,在 GitLab 项目设置 Webhook 指向 Jenkins 对应任务(需保持网络可达与 CSRF 配置一致)。
  • 构建步骤:Add build step → Execute shell,示例命令:
    • Java/Maven:sh ‘mvn clean package
    • Node.js/npm:sh ‘npm ci && npm run build
  • 构建后操作(可选):Archive the artifacts(如 target/*.jar)、Publish JUnit reports、HTML Publisher、邮件通知等。

四 Pipeline 方式示例

  • 在代码根目录放置 Jenkinsfile,示例:
    pipeline {
    agent any
    tools {
    maven ‘Maven’
    jdk ‘JDK17’
    }
    stages {
    stage(‘Checkout’) { steps { git ‘https://github.com/username/myapp.git’ } }
    stage(‘Build’) { steps { sh ‘mvn clean package -DskipTests’ } }
    stage(‘Test’) { steps { sh ‘mvn test’ } }
    stage(‘Archive’) { steps { archiveArtifacts artifacts: ‘target/*.jar’, fingerprint: true } }
    }
    }
  • 任务类型选择 Pipeline,在配置中指向该仓库与分支(或直接在 Jenkinsfile 中定义 SCM)。

五 常见问题与排查

  • 构建权限问题:在 Execute shell 中避免使用 sudo;如必须使用,请配置 Jenkins 用户免密或采用合适的权限提升策略。
  • Webhook 未触发:确认 Jenkins URL 可达、端口 8080 对外开放、CSRF 保护配置与 Webhook 类型匹配;GitHub/GitLab 仓库的 Payload URL 与事件选择正确。
  • 轮询不生效:检查 SCM 轮询 表达式(如 **H/5 * * * ***)与分支匹配;确保 Jenkins 能访问 Git 仓库(凭据与网络可达)。
  • 工具未找到:在 Global Tool Configuration 正确设置 JDK/Git/Maven/Node.js 路径,并在任务中引用相同名称。

0