ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
本小节将用来演示如何将Java项目进行镜像打包 --- ### 约定 暂时约定我们的项目是使用 *Maven* 来进行构建,其他的构建方式原理类似 --- ### 镜像生成 - 增加容器常规配置,包括镜像名、版本、TAG格式及地址等 ![](https://img-blog.csdnimg.cn/8b6df38c3aef43049da9ada2e29f2c94.png) - 引入插件并配置相关的 *生命周期* ![](https://img-blog.csdnimg.cn/f3e59c8747964818b46c04b6d8be1219.png) --- ### CICD脚本 - 这步主要用来示范,代码CICD语法及基本步骤,开发者因根据实际情况配置,注意将 <> 括号内替换你自己的值 ``` pipeline { agent any environment { CODE_REPOSITORY = "<your project git repository>" CODE_DIR = "/tmp/<project-name>" BRANCH_NAME = "<your branch>" } options { timeout(15) skipStagesAfterUnstable() skipDefaultCheckout() disableConcurrentBuilds() } stages { stage("拉取代码") { steps { echo "[INFO] 任务名称: ${env.JOB_NAME}" echo "[INFO] 构建编号: ${env.BUILD_ID}" echo "[INFO] 构建空间: ${env.WORKSPACE}" echo "[INFO] 构建地址: ${env.BUILD_URL}" echo "[INFO] 构建分支: ${env.BRANCH_NAME}" script { if ("dev".equalsIgnoreCase(env.BRANCH_NAME)) { println("[INFO] 构建环境: 开发环境") } else if ("test".equalsIgnoreCase(env.BRANCH_NAME)) { println("[INFO] 构建环境: 测试环境") } else if ("master".equalsIgnoreCase(env.BRANCH_NAME)) { println("[INFO] 构建环境: 生产环境") } else { println("[ERROR] 构建环境无法识别") } } echo "[INFO] 进入项目目录" dir("${env.CODE_DIR}") { echo "[INFO] 删除旧的仓库开始" sh "rm -rf *" echo "[INFO] 删除旧的仓库结束" echo "[INFO] 拉取源代码开始" git( branch: env.BRANCH_NAME, credentialsId: "a83c4269-e080-45dc-b14f-7b8076bed4e2", # 这个地方就是Jenkins凭证章节的值 url: "${CODE_REPOSITORY}", changelog: true ) echo "[INFO] 拉取源代码结束" } } } stage("编译") { steps { echo "[INFO] 源代码编译开始" dir("${env.CODE_DIR}") { sh "mvn clean compile" } echo "[INFO] 源代码编译结束" } } stage("漏洞扫描") { when { branch "dev" } steps { echo "[INFO] 静态分析开始" dir("${env.CODE_DIR}") { sh "mvn sonar:sonar" } echo "[INFO] 静态分析结束" } } stage("单元测试") { steps { echo "[INFO] 源代码编译开始" dir("${env.CODE_DIR}") { sh "mvn clean install -DskipTests" } echo "[INFO] 源代码编译结束" } } stage("生成镜像") { steps { echo "[INFO] 生成镜像开始" dir("${env.CODE_DIR}") { sh "sh build.sh" } echo "[INFO] 生成镜像结束" } } stage("发布服务") { steps { echo "[INFO] 升级开发环境服务开始" dir("${env.CODE_DIR}") { sh "sh deploy.sh" } echo "[INFO] 升级开发环境服务结束" } } } } ``` --- ### 发布和升级 - 关于部署策略及部署到哪个集群如何配置,可以参考示例代码里的YAML文件 ![](https://img-blog.csdnimg.cn/4ab8902405f14306abdad7bd46e60673.png) - [示例代码传送门](http://59.202.42.100/data/tc/general/docker-demo.git)