首页主机资讯Jenkins在Ubuntu中的持续集成实践

Jenkins在Ubuntu中的持续集成实践

时间2026-01-22 00:00:03发布访客分类主机资讯浏览664
导读:在 Ubuntu 上落地 Jenkins 持续集成 一 环境准备与安装 安装 Java(建议 OpenJDK 17,亦可使用 OpenJDK 11) 命令:sudo apt update && sudo apt inst...

在 Ubuntu 上落地 Jenkins 持续集成

一 环境准备与安装

  • 安装 Java(建议 OpenJDK 17,亦可使用 OpenJDK 11
    • 命令:sudo apt update & & sudo apt install -y openjdk-17-jdk
    • 验证:java -version
  • 导入 Jenkins 仓库密钥与源(使用 signed-by 方式)
    • 命令:
      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
    • 检查:sudo systemctl status jenkins
  • 防火墙放行(如使用 UFW
    • 命令:sudo ufw allow 8080 & & sudo ufw status

二 初始化与安全加固

  • 解锁并完成初始化
    • 访问:http://< 服务器IP> :8080
    • 初始密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    • 选择安装推荐插件并创建管理员账户
  • 基础安全配置
    • 进入 Manage Jenkins → Configure Global Security
    • 启用安全与 CSRF 保护
    • 授权策略建议:Project-based Matrix Authorization StrategyRole-Based Strategy
    • 如需公网访问,建议配置 SSL/TLS(反向代理或 Ingress 方式)

三 工具链与全局配置

  • 安装构建与版本控制工具
    • 命令:sudo apt install -y git maven(Node.js 可按需安装)
  • 全局工具路径
    • 进入 Manage Jenkins → Global Tool Configuration
    • 配置 JDK、Git、Maven、Node.js 的安装路径或自动安装
  • 邮件通知(可选)
    • 进入 Manage Jenkins → Configure System → E-mail Notification
    • 配置 SMTP 服务器与发件人,用于构建结果通知

四 创建任务与流水线示例

  • Freestyle 任务(适合快速上手)
    • 新建任务 → 选择 Freestyle project
    • 源码管理:选择 Git,填写仓库 URL 与分支
    • 构建触发器:可设置 轮询 SCM(如 H/5 * * * * 每 5 分钟)
    • 构建步骤:例如 mvn clean package
    • 构建后操作:归档产物(如 target/*.jar)、发送邮件
  • Pipeline 任务(推荐,代码即流程)
    • 新建任务 → 选择 Pipeline
    • 方式一:在界面直接编写 Jenkinsfile
    • 方式二:选择 Pipeline script from SCM,从 Git 仓库根目录读取 Jenkinsfile
    • 示例 Jenkinsfile(Java + Maven)
      pipeline {
      
        agent any
        tools {
      
          maven 'Maven 3.8'   // 需在 Global Tool Configuration 中定义
          jdk   'OpenJDK 17' // 需在 Global Tool Configuration 中定义
        }
      
        stages {
      
          stage('Checkout') {
      
            steps {
       git url: 'https://github.com/your-org/your-app.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', fingerprint: true }
      
          }
      
        }
      
        post {
      
          always {
       cleanWs() }
      
          failure {
       echo 'Build failed!' }
      
          success {
       echo 'Build succeeded!' }
      
        }
      
      }
      
      
    • 示例 Jenkinsfile(Python)
      pipeline {
      
        agent any
        stages {
      
          stage('Checkout') {
      
            steps {
       git url: 'https://github.com/your-org/your-pyapp.git', branch: 'main' }
      
          }
      
          stage('Install') {
      
            steps {
       sh 'pip install -r requirements.txt' }
      
          }
      
          stage('Test') {
      
            steps {
       sh 'pytest --junitxml=reports/results.xml' }
      
          }
      
          stage('Archive') {
      
            steps {
       junit 'reports/results.xml' }
      
          }
      
        }
      
      }
          
      

五 触发与部署实践

  • GitHub Webhook 自动触发
    • GitHub 仓库:Settings → Webhooks → Add webhook
    • Payload URL:http://< jenkins-server> :8080/github-webhook/
    • 事件:选择 Just the push event
    • Jenkins 项目:勾选 Build when a change is pushed to GitHub
  • 参数化构建(多环境发布)
    • 项目配置勾选 This project is parameterized
    • 添加 String Parameter(如 ENV,默认值 dev
    • 构建步骤中使用:echo "当前环境:$ENV" 或按 $ENV 选择部署脚本/配置
  • 远程部署与通知
    • 远程执行与传输:使用 Publish Over SSH 插件或 ssh/scp 将产物发布到目标主机
    • 构建后动作:归档产物、发布测试报告、发送邮件通知(如 Email Extension Plugin
  • 常见问题与排查
    • 端口占用:修改 /etc/default/jenkins 中的 HTTP_PORT 后重启 sudo systemctl restart jenkins
    • 仓库访问:SSH 方式需将 Jenkins 用户的 SSH 公钥 添加到 Git 托管平台(如 su - jenkinsssh-keygen -t rsa
    • GPG 签名错误:确保使用最新的 jenkins.io-2023.key 并以 signed-by 方式导入
    • 构建环境不一致:在 Global Tool Configuration 固定 JDK/Maven/Node 版本,避免“在我机器能跑”问题

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Jenkins在Ubuntu中的持续集成实践
本文地址: https://pptw.com/jishu/789270.html
Linux环境下如何高效运行JS脚本 Jenkins在Ubuntu上的监控与报警

游客 回复需填写必要信息