温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Jenkins自动化部署流程是怎样的

发布时间:2025-11-14 09:56:11 来源:亿速云 阅读:146 作者:小樊 栏目:系统运维

Jenkins 自动化部署流程

流程概览

  • 触发:代码推送到 Git 后,由 Webhook 或 SCM 轮询触发构建。
  • 拉取代码:Jenkins 从指定仓库与分支拉取最新源码。
  • 构建与测试:执行 Maven/Gradle 构建、运行单元测试与静态检查,生成制品(如 JAR/WAR)。
  • 制品归档与质量门禁:归档产物,结合 SonarQube 等工具进行质量检查,失败则阻断发布。
  • 部署到测试环境:自动部署到 dev/qa,运行冒烟测试。
  • 审批与发布:对 prod 环境进行人工确认或审批,再执行部署。
  • 回滚与通知:失败自动回滚,并通过 邮件/Slack 等通知团队。

环境与工具准备

  • 安装与运行 Jenkins:可使用 Docker 快速启动(映射 8080/50000 端口,挂载数据卷),或系统包管理器安装;首次访问 http://:8080 完成初始化。
  • 核心插件:安装 Git、Pipeline、Maven、Docker、Publish Over SSH 等插件,覆盖源码、流水线、构建与发布需求。
  • 全局工具配置:在 Jenkins 中配置 JDK、Maven、Git 路径,确保构建节点可用。
  • 凭据管理:在 Dashboard > Manage Jenkins > Credentials 集中管理 Git SSH 密钥、目标服务器 SSH、镜像仓库凭据。
  • 目标服务器准备:开启 SSH 服务,创建部署目录,配置权限;如使用容器化,准备 Docker 与私有镜像仓库(如 Harbor)。

流水线设计与关键配置

  • 参数化构建:通过参数选择部署环境(如 dev/qa/prod),便于一套流水线复用多环境。
  • 声明式 Pipeline 骨架(Jenkinsfile):
pipeline {
  agent any
  parameters {
    choice(name: 'DEPLOY_ENV', choices: ['dev','qa','prod'], description: '选择部署环境')
  }
  stages {
    stage('Checkout') {
      steps { git url: 'git@github.com:your/repo.git', credentialsId: 'git-ssh' }
    }
    stage('Build') {
      steps { sh 'mvn -B -DskipTests clean package' }
      post { success { archiveArtifacts 'target/*.jar' } }
    }
    stage('Test') {
      parallel {
        stage('Unit Test') { steps { sh 'mvn test' } }
        stage('SonarQube') {
          steps { withSonarQubeEnv('sonar-server') { sh 'mvn sonar:sonar' } }
        }
      }
    }
    stage('Deploy') {
      steps {
        script {
          if (params.DEPLOY_ENV == 'prod') {
            timeout(time: 15, unit: 'MINUTES') {
              input message: '确认生产环境部署?', ok: '发布'
            }
          }
          // 方式A:SSH 传输产物并重启
          sshPublisher(
            credentialsId: 'prod-ssh',
            transfers: [ [sourceFile: 'target/*.jar', remoteDirectory: '/app'] ]
          )
          sh 'ssh user@prod-server "systemctl restart yourapp.service"'

          // 方式B:Docker 构建与部署(示例)
          // dockerImage = docker.build("your-registry/your-app:${env.BUILD_ID}")
          // dockerImage.push()
          // sh 'ssh prod-server "docker pull your-registry/your-app:${env.BUILD_ID} && docker-compose up -d"'
        }
      }
    }
  }
  post {
    always   { emailext subject: "构建状态: ${currentBuild.result}", to: 'team@example.com' }
    failure  { slackSend channel: '#alerts', message: '构建失败!' }
    success  { echo '部署完成' }
  }
}
  • 触发器配置:
    • SCM 轮询:如 H/5 * * * *(每 5 分钟检查变更)。
    • Webhook:GitHub/GitLab 推送事件触发构建,减少延迟。

部署策略与回滚

  • 蓝绿部署:准备两套环境(Blue/Green),通过 Nginx/负载均衡切换流量,实现零停机更新。
  • 滚动更新:逐步替换实例,适合资源有限、要求连续可用的场景。
  • 金丝雀发布:按百分比/权重将流量导入新版本,降低风险。
  • 回滚机制:
    • 容器化场景可用 Kubernetes 回滚:kubectl rollout undo deployment/your-app。
    • 制品版本化(如 BUILD_ID 或 Git 标签)配合重新部署旧镜像/旧包实现快速回滚。

安全与运维最佳实践

  • 安全:最小权限原则管理凭据;限制 Jenkins 与部署节点的网络访问;对生产发布启用审批与超时。
  • 资源与稳定性:为 Jenkins Master/Agent 配置合理 JVM 堆(如 4–8GB) 与执行器数量;设置构建保留策略(如最近 30 天/100 次)。
  • 可观测性:归档构建日志与测试报告;集成 ELK 收集部署与运行日志;构建状态通过 邮件/IM 通知。
  • 质量与合规:将 Jenkinsfile 纳入代码仓库(流水线即代码);在流水线中强制执行质量门禁与自动化冒烟测试,失败阻断发布。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手