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 效率。

相关推荐
代码方舟7 分钟前
零信任架构实战:基于天远人企关联构建自动化供应链金融网关
运维·人工智能·架构·自动化
贵沫末1 小时前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo2 小时前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_808414382 小时前
Linux中动静态库的理解
linux·运维·服务器
分布式存储与RustFS2 小时前
模型 checkpoint 放对象存储:分片上传、断点续传与残留清理
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
一条破秋裤3 小时前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
FED_AF5 小时前
Linux运维“邪修”功法之通配符
linux·运维
YOLO数据集集合6 小时前
风机叶片表面损伤检测数据集 | 风机叶片 表面损伤 污渍检测 无人机巡检 风电运维9119期
运维·人工智能·计算机视觉·目标跟踪·无人机·智慧城市·电力巡检
j7~6 小时前
【Linux网络编程】四十七.《Linux IO 模型详解:阻塞 IO、非阻塞 IO 与 IO 多路转接(select)》
linux·运维·网络·select·非阻塞io·阻塞io·i/o多路连接
分布式存储与RustFS6 小时前
用RustFS给Harbor当S3存储后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准