本小節將用來演示如何將Java項目進行鏡像打包
---
### 約定
暫時約定我們的項目是使用 *Maven* 來進行構建,其他的構建方式原理類似
---
### 鏡像生成
- 增加容器常規配置,包括鏡像名、版本、TAG格式及地址等

- 引入插件并配置相關的 *生命周期*

---
### 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文件

- [示例代碼傳送門](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