当前位置: 首页 > news >正文

Jenkins 简易使用记录

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

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

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

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

    • 通过 Docker 或原生安装(推荐 Docker 简化依赖):
      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)

    pipeline {agent anystages {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
      [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)

    pipeline {agent anystages {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
      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 效率。

相关文章:

  • 天梯赛数据结构合集
  • Qt官方案例知识点总结(图形视图——Colliding Mice)
  • 极狐GitLab 账号限制有哪些?
  • 从数字化到智能化,百度 SRE 数智免疫系统的演进和实践
  • 第 5 期(进阶版):训练第一个 DDPM 模型(使用 CIFAR-10 数据集)
  • Kafka 时间轮
  • 杭州小红书代运营公司-品融电商:全域增长策略的实践者
  • U盘实现——双盘符实现
  • AI当前状态:有哪些新技术
  • 深入理解分布式缓存 以及Redis 实现缓存更新通知方案
  • Leetcode 2158. 每天绘制新区域的数量【Plus题】
  • 复现SCI图像增强(Toward fast, flexible, and robust low-light image enhancement.)
  • 高安全低功耗MCU:机器人控制系统的智能化与可靠性提升
  • Kubernetes》》k8s》》Namespace
  • 评测 Doubao-1.5-thinking-pro | 豆包·深度思考模型
  • 工程化实践:Flutter项目结构与规范
  • LeetCode 443 压缩字符串
  • 工厂方法模式详解及c++代码实现(以自动驾驶感知模块中的应用为例)
  • 【第48节】探究汇编使用特性:从基础到混合编程
  • 合成数据中的对抗样本生成与应用:让AI模型更强、更稳、更安全
  • 跑马,一场对机器人的长测试
  • 财政部:一季度证券交易印花税411亿元,同比增长60.6%
  • 广西贵港干旱村民抽水救甘蔗,镇政府:已组织打井、布管
  • 眨眼间能完成10亿次存储,上海科研团队研制出超高速闪存
  • 上饶师范学院党委副书记王玉皞履新江西省委组织部部务委员
  • 华勤技术回应H20政策调整:产业链已做充分准备,预计年营收维持20%以上增长