Jenkins 简易使用记录

一、Jenkins 核心功能与适用场景
  1. 核心功能

    • 持续集成(CI):自动构建代码、运行单元测试。
    • 持续交付(CD):自动化部署到测试/生产环境。
    • 任务调度:定时执行任务(如备份、清理)。
    • 插件生态:支持 1,500+ 插件(Git、Docker、Kubernetes 等)。
  2. 适用场景

    • 自动化测试:每次提交后自动运行测试。
    • 多环境部署:一键发布到开发、测试、生产环境。
    • 微服务架构:并行构建多个服务。
    • 跨团队协作:通过流水线规范开发流程。

二、Jenkins 使用流程(通用步骤)
  1. 安装与配置

    • 通过 Docker 或原生安装(推荐 Docker 简化依赖):

      bash 复制代码
      docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
    • 初始化后安装常用插件:Git、Pipeline、SSH。

  2. 创建任务

    • 自由风格项目:适合简单任务。
    • Pipeline 项目 :通过 Jenkinsfile 定义复杂流程(推荐)。

三、Spring Boot 项目部署示例
场景:将 Spring Boot 项目构建为 JAR 包并部署到 Linux 服务器。
  1. Jenkins 配置

    • 凭据管理:添加 Git 仓库的 SSH 密钥和服务器 SSH 账号。
    • 安装插件:Maven Integration、Publish Over SSH。
  2. Pipeline 脚本(Jenkinsfile)

    groovy 复制代码
    pipeline {
      agent any
      stages {
        stage('Checkout') {
          steps {
            git url: 'git@github.com:your/spring-boot-repo.git', branch: 'main'
          }
        }
        stage('Build') {
          steps {
            sh 'mvn clean package -DskipTests'
          }
        }
        stage('Deploy') {
          steps {
            sshPublisher(
              publishers: [
                sshPublisherDesc(
                  configName: 'prod-server',
                  transfers: [
                    sshTransfer(
                      sourceFiles: 'target/*.jar',
                      removePrefix: 'target/',
                      remoteDirectory: '/opt/app',
                      execCommand: 'sudo systemctl restart springboot-app'
                    )
                  ]
                )
              ]
            )
          }
        }
      }
    }
  3. 服务器准备

    • 创建 Systemd 服务文件 /etc/systemd/system/springboot-app.service

      ini 复制代码
      [Unit]
      Description=Spring Boot App
      After=network.target
      
      [Service]
      ExecStart=/usr/bin/java -jar /opt/app/your-app.jar
      User=appuser
      Restart=always
      
      [Install]
      WantedBy=multi-user.target

四、Vue 项目部署示例
场景:构建 Vue 静态文件并部署到 Nginx 服务器。
  1. Pipeline 脚本(Jenkinsfile)

    groovy 复制代码
    pipeline {
      agent any
      stages {
        stage('Checkout') {
          steps {
            git url: 'git@github.com:your/vue-project.git', branch: 'main'
          }
        }
        stage('Build') {
          steps {
            sh 'npm install'
            sh 'npm run build'
          }
        }
        stage('Deploy') {
          steps {
            sshPublisher(
              publishers: [
                sshPublisherDesc(
                  configName: 'frontend-server',
                  transfers: [
                    sshTransfer(
                      sourceFiles: 'dist/**',
                      remoteDirectory: '/usr/share/nginx/html',
                      execCommand: 'sudo systemctl reload nginx'
                    )
                  ]
                )
              ]
            )
          }
        }
      }
    }
  2. 服务器配置

    • 确保 Nginx 配置指向 /usr/share/nginx/html

      nginx 复制代码
      server {
        listen 80;
        root /usr/share/nginx/html;
        index index.html;
      }

五、最佳实践与建议
  1. Pipeline 优化

    • Jenkinsfile 纳入代码仓库,实现"流水线即代码"。
    • 使用 parallel 阶段加速多模块构建。
  2. 安全与维护

    • 敏感信息管理:使用 Jenkins 的 Credentials Binding 插件注入密码。
    • 镜像仓库集成:结合 Docker 构建镜像并推送到 Harbor 或 Docker Hub。
    • 回滚机制:通过版本号或 Git Tag 快速回退。
  3. 高级场景

    • Kubernetes 部署:使用 Jenkins Kubernetes 插件动态创建 Pod。
    • 多环境配置:通过参数化构建选择环境(dev/test/prod)。

六、常见问题处理
  • 构建失败定位:查看控制台日志,优先解决编译错误。
  • 权限问题:确保 Jenkins 用户有服务器 SSH 权限和文件写入权限。
  • 网络超时:配置 Jenkins 代理或调整超时时间。

通过以上步骤,可高效实现 Spring Boot 和 Vue 项目的自动化部署,显著提升 DevOps 效率。

相关推荐
大树882 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉5 小时前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦6 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj6 小时前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
lsyeei6 小时前
linux 系统目录详解
linux·运维·服务器