本小节将用来演示如何将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)
- 前言
- 关于文档
- 第一章 预备
- 1.1 机器资源
- 1.2 网络环境
- 1.3 镜像源
- 1.4 磁盘挂载
- 第二章 基础组件
- 2.1 安装Zlib
- 2.2 安装JDK
- 2.3 安装Maven
- 2.4 安装Git
- 2.5 安装SonarQube
- 2.6 安装Nexus
- 2.7 安装NodeJS
- 2.8 安装Docker
- 2.9 安装Compose
- 2.10 安装Kubectl
- 第三章 集群组件
- 3.1 安装Gitlab
- 3.2 安装Jenkins
- 3.3 安装Harbor
- 3.4 安装Rancher
- 3.5 安装Nacos
- 3.6 安装LDAP
- 3.7 安装LDAPAdmin
- 第四章 集群配置
- 4.1 配置流水线
- 4.2 配置Hook
- 4.3 配置Rancher-Cli
- 4.4 配置Harbor
- 4.5 配置LDAP
- 4.6 配置Rancher
- 第五章 开发集成
- 5.1 Java项目
- 5.2 NodeJS项目
- 5.3 Python项目
- 5.4 Go项目
- 第六章 F&Q
- 6.1 安装错误Compose
- 6.2 安装错误Harbor