Jenkins(速通版)

一、项目部署:

回归测试

Nexus: maven的私服仓库,从这里面取拉取。没有的话,远程仓库下载到nexus。

项目开发-部署的完整生命周期

任务:项目管理软件。Jira、禅道; 开发每天领开发任务;

开发:项目开发工具。VSCode、Idea、Eclipse; 进行代码开发;

提交:代码仓库。Github、Gitee、Gitlab、SVN; 把开发完成的代码提交推送到公司的代码仓库

构建:项目构建工具。 maven、npm; 利用构建工具对项目进行编译、构建。

质量分析:代码分析工具。sonarqube; 把所有代码进行扫描,分析出不符合规范的代码、以及常见bug。"1".equals(param) null != orderInfo;

单元测试:测试工具。junit; 把单元测试跑一遍; 测试覆盖率(90%);

制品:制作产品。nexus、maven中央仓库; 把项目产生的jar包、静态文件、exe等 上传到制品仓库。

service-order-v1.0.jar制作镜像:把产品做成镜像;docker、harbor;把制作好的docker镜像推送到镜像仓库。

部署:把产品镜像集群化的部署到线上平台; docker ---> kubernetes;

监控运维:把每个应用各种指标监控起来; Prometheus+Grafana; 把各种预警信息发送给运维、开发;

整个生命周期涉及到众多工具链。如果从头到尾都是手动自己做,就会非常慢。

Jenkins: 帮我们打通devops整个链路。

以前我们手动运行一堆命令,最终实现项目部署

Jenkins整合各种软件帮我们自动运行部署期间的所有命令;

1、CI(Continuous Integration)

持续集成: 开发好的模块,集成整个系统中进行联动测试; 把开发好的功能自动化部署到测试环境。

2、CD(Continuous Delivery 和 Continuous Deployment)

持续交付、持续部署;

持续交付与持续部署的区别:持续交付是一种能力,持续部署是一种方式。持续部署:把产品自动化的部署到生产环境。 先CI再CD;

交付: 把开发好的产品交给客户;

二、制作流水线

前置条件:有一个maven项目

2.1 代码推送到代码仓库
2.2 jenkins自动去仓库拉取代码

重要的流水线步骤

bash 复制代码
pipeline {
    agent any

    stages { //所有阶段
        stage('构建') { //stage定义一个阶段
            steps {
                sh 'mvn clean build'
            }
        }
        stage('质量分析') {
            steps {
                echo '打包  ok...'
            }
        }
        stage('单元测试') {
            steps {
                echo 'deploy ok...'
            }
        }
        stage('打包制品') {
            steps {
                echo 'deploy ok...'
            }
        }
        stage('制作镜像') {
            steps {
                echo 'deploy ok...'
            }
        }
        stage('部署') {
            steps {
                echo 'deploy ok...'
            }
        }
    }
}
2.3 在jenkins中安装maven 环境

可以用下面的命令拉取镜像

bash 复制代码
stage('构建') { //stage定义一个阶段
            steps {
                //  可以先使用命令下载环境 docker pull maven:3.9.0-amazoncorretto-8
                withDockerContainer('maven:3.9.0-amazoncorretto-8') {
                    // some block
                    sh 'ls'
                    sh 'pwd'
                    sh 'mvn clean package'
                }
            }
        }
2.4 在jenkins中配置外部镜像
2.5 单元测试
bash 复制代码
stage('单元测试') {
      steps {
          withDockerContainer(
             args: '-v mvn-conf:/usr/share/maven/conf -v mvn-rep:/root/.m2',
             image: 'maven:3.9.0-amazoncorretto-8') {
             sh 'mvn test '
         }
      }
  }
2.6 打包制品
bash 复制代码
stage('打包制品') {
    steps {
        archiveArtifacts artifacts: 'target/*.jar', followSymlinks: false
    }
}
2.7 制作镜像并部署
bash 复制代码
FROM openjdk:8

COPY target/*.jar /app.jar

EXPOSE 8080

ENV TZ=Asia/Shanghai

ENTRYPOINT ["java","-jar","/app.jar"]

docker build -f DockerFile -t devops-demo:v1.0

使用jenkins的话:

bash 复制代码
stage('制作镜像') {
    steps {
        sh 'docker build -f DockerFile -t devops-demo:v1.0 .'
    }
}
stage('部署') {
    steps {
        sh 'docker rm -f devops-demo'
        sh 'docker run -d -p 88:8080 --name devops-demo devops-demo:v1.0'
    }
}
2.8 触发远程构建:Jenkins -- 了解

修改完成之后,项目会自动更新!

2.9 参数化构建
bash 复制代码
parameters {
    string(name: 'APP_VER', defaultValue: 'v1.0', description: '版本号')
}

stage('制作镜像') {
    steps {
        sh "docker build -f DockerFile -t devops-demo:${APP_VER} ."
    }
}
stage('部署') {
    steps {
        sh 'docker rm -f devops-demo'
        sh "docker run -d -p 88:8080 --name devops-demo devops-demo:${APP_VER}"
    }
}
2.10 推送镜像
2.11 发送邮件
bash 复制代码
stage('发送邮件'){
    steps {
        emailext body: '项目已经部署完毕', subject: '构建完成', to: 'xxxxxxxxx@qq.com'
    }
}

记得打开邮箱功能:

立即构建,可以看到结果

相关推荐
Sunsets_Red16 分钟前
待修改莫队与普通莫队优化
java·c++·python·学习·算法·数学建模·c#
葡萄城技术团队19 分钟前
在 Java 中优化 MySQL 查询以提升性能
java·开发语言·mysql
杀死那个蝈坦22 分钟前
短链接生成-基于布隆过滤器和唯一索引
java·数据库·微服务·oracle·rocketmq
慕白Lee22 分钟前
Java foreach在lambda的foreach遍历中退出操作(lambda foreach break)
java
winfield82125 分钟前
Java 中大量闲置 MySQL 连接的解决方案(从根因到落地)
java·mysql
moxiaoran575328 分钟前
Java开发中VO的使用
java·开发语言
计算机毕设指导629 分钟前
基于微信小程序图像识别的智能垃圾分类系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·分类·maven
LJianK135 分钟前
前后端接口常见传参
java·spring
独自破碎E36 分钟前
消息队列如何保证消息的有效性?
java·开发语言·rocketmq·java-rocketmq
38242782738 分钟前
使用 webdriver-manager配置geckodriver
java·开发语言·数据库·爬虫·python