diff --git a/docs/build-tools2/AI_CONTEXT.md b/docs/build-tools2/AI_CONTEXT.md new file mode 100644 index 0000000..e263e18 --- /dev/null +++ b/docs/build-tools2/AI_CONTEXT.md @@ -0,0 +1,46 @@ +# AI 会话快速上下文加载指引 + +## 使用方法 + +新的 AI 会话开始打包时,只需告知 AI: + +> "请阅读 E:\works\agents\gbs\docs\build-tools2\ 目录下的所有文件,然后帮我打包 [项目名]" + +AI 将自动: +1. 读取 `credentials.conf` 获取所有账号密码 +2. 读取 `projects.conf` 获取项目参数 +3. 读取 `README.md` 了解打包流程 +4. 使用 `build_push.py` 或 paramiko 执行打包 + +## 文件优先级 + +| 文件 | 用途 | 读取优先级 | +|------|------|-----------| +| credentials.conf | 账号密码、服务器连接 | 必须 | +| projects.conf | 各项目 JAR 路径、应用名 | 必须 | +| README.md | 完整操作手册 | 需要时读取 | +| build_push.py | 通用打包脚本 | 可直接执行 | +| Dockerfile.project | 项目 Dockerfile 示例 | 参考 | +| Dockerfile.template | 模板 Dockerfile | 参考 | + +## 一键打包指令示例 + +``` +# AI 会话中直接告诉 AI: +帮我打包 safety-eval-service,版本号递增 + +# AI 会自动: +# 1. 读取 projects.conf 找到 JAR 路径和 Dockerfile +# 2. 根据 latest_tag 确定新版本号 +# 3. 读取 credentials.conf 获取连接信息 +# 4. 执行 paramiko 打包流程 +# 5. 返回镜像地址 +``` + +## 新增项目时 + +在 `projects.conf` 中添加新的 `[project-name]` 段,填写: +- app_name: K8s 部署名 +- jar_path: 本地 JAR 完整路径 +- dockerfile_type: project 或 template +- dockerfile: 项目 Dockerfile 路径 (如有) diff --git a/docs/build-tools2/Dockerfile.project b/docs/build-tools2/Dockerfile.project new file mode 100644 index 0000000..06eba24 --- /dev/null +++ b/docs/build-tools2/Dockerfile.project @@ -0,0 +1,16 @@ +# ============================================================ +# 通用项目 Dockerfile 模板 (适用于项目自带 Dockerfile 的场景) +# 基础镜像: 杭州 ACR 的 JDK 1.8.0_202 镜像 +# ============================================================ +# 注意: 此模板中 JAR 路径为 ./start/target/start.jar +# 打包脚本会自动将 JAR 放到正确的目录结构中 +# ============================================================ + +FROM jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/pub/jdk:1.8.0_202 + +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +COPY ./start/target/start.jar /opt/app.jar + +ENTRYPOINT ["java", "-jar", "/opt/app.jar"] diff --git a/docs/build-tools2/Dockerfile.template b/docs/build-tools2/Dockerfile.template new file mode 100644 index 0000000..c19dc8c --- /dev/null +++ b/docs/build-tools2/Dockerfile.template @@ -0,0 +1,41 @@ +# ============================================================ +# GBS Java Application Dockerfile 模板 (CentOS 7 + JDK 1.8.0_202) +# 适用于没有项目自带 Dockerfile 的场景,通过本地 JDK 打包 +# ============================================================ +# Build context 目录结构: +# . +# ├── Dockerfile +# ├── jdk1.8.0_202/ (从主节点 /opt/jdk1.8.0_202 复制) +# └── target/ +# └── *.jar (应用 JAR 文件) +# ============================================================ + +FROM centos:7 + +# 设置时区为 Asia/Shanghai +RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + +# 复制 JDK +COPY jdk1.8.0_202/ /opt/jdk1.8.0_202/ + +# 设置 Java 环境变量 +ENV JAVA_HOME=/opt/jdk1.8.0_202 +ENV PATH=$PATH:$JAVA_HOME/bin +ENV LANG=C.UTF-8 + +# 创建日志目录 +RUN mkdir -p /opt/logs + +# 复制 JAR 文件 +COPY target/*.jar /opt/app.jar + +# 启动参数 (可通过 K8s deployment 或 docker run -e 覆盖) +ENTRYPOINT ["/opt/jdk1.8.0_202/bin/java", \ + "-Dnacos.namespace=jjb-dragon", \ + "-Dnacos.url=prod-nacos:8848", \ + "-Dspring.profiles.active=prod", \ + "-Dmysql.password=Mysql@zcloud33080", \ + "-Dmysql.host=192.168.20.100", \ + "-Dmysql.port=33080", \ + "-Dmysql.username=root", \ + "-jar", "/opt/app.jar"] diff --git a/docs/build-tools2/README.md b/docs/build-tools2/README.md new file mode 100644 index 0000000..63aa8ea --- /dev/null +++ b/docs/build-tools2/README.md @@ -0,0 +1,236 @@ +# GBS 镜像打包操作手册 + +## 目录概述 + +本目录包含 GBS 项目 Docker 镜像打包所需的全部配置和脚本。AI 会话加载本目录后,可立即执行打包操作,无需额外询问环境信息。 + +``` +docs/build-tools2/ +├── README.md # 本文档 (打包流程说明) +├── credentials.conf # 所有账号密码和环境配置 +├── projects.conf # 各项目打包参数清单 +├── build_push.py # 通用打包脚本 (Python, 本地执行) +├── Dockerfile.project # 项目自带 Dockerfile 示例 (JDK 基础镜像) +└── Dockerfile.template # 模板 Dockerfile (CentOS 7 + JDK 复制) +``` + +## 快速开始 (AI 会话指引) + +当用户要求打包时,按以下步骤执行: + +1. 读取 `credentials.conf` 获取所有连接信息 +2. 读取 `projects.conf` 获取目标项目的 JAR 路径、应用名等参数 +3. 确认 JAR 文件存在且为最新版本 +4. 版本号递增 (基于 projects.conf 中的 latest_tag) +5. 执行 `build_push.py` 或直接用 paramiko 构建并推送 +6. 返回完整镜像地址 + +## 打包架构 + +``` +本地 Windows 构建服务器 (192.168.20.100) 阿里云 ACR +┌──────────┐ SSH/SFTP ┌──────────────────┐ docker push ┌────────────────────┐ +│ JAR 文件 │ ─────────────────→│ Docker build │ ───────────────→│ 张家口 ACR │ +│ Dockerfile│ │ - 拉取基础镜像 │ │ kilaa/zcloud-gbs- │ +│ Python │ │ - COPY JAR │ │ operation │ +│ 打包脚本 │ │ - docker build │ └────────────────────┘ +└──────────┘ │ - docker push │ + └──────────────────┘ +``` + +## 两种打包模式 + +### 模式一: 项目自带 Dockerfile + +适用于项目根目录有 Dockerfile 的情况(如 safety-eval-service)。 + +特点: +- Dockerfile 引用杭州 ACR 的 JDK 基础镜像: `jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/pub/jdk:1.8.0_202` +- JAR 放置路径: `{build_dir}/start/target/start.jar` +- 需要先登录杭州 ACR 拉取基础镜像 +- 镜像大小约 870-910MB + +远程构建目录结构: +``` +/tmp/docker-build-{app_name}/ +├── Dockerfile (从项目上传) +└── start/ + └── target/ + └── start.jar (从本地 JAR 上传,统一命名) +``` + +### 模式二: 模板 Dockerfile (CentOS 7 + JDK) + +适用于没有项目 Dockerfile 的情况(如 zcloud-gbs-certificate)。 + +特点: +- 基础镜像: `centos:7`,JDK 从主节点 `/opt/jdk1.8.0_202` 复制到构建上下文 +- JAR 放置路径: `{build_dir}/target/*.jar` +- ENTRYPOINT 包含 Nacos、MySQL 等启动参数 +- 镜像大小约 840-880MB + +远程构建目录结构: +``` +/tmp/docker-build-{app_name}/ +├── Dockerfile (从 Dockerfile.template 上传) +├── jdk1.8.0_202/ (从 /opt/jdk1.8.0_202 复制) +└── target/ + └── *.jar (从本地 JAR 上传) +``` + +## 打包流程详细步骤 + +### 1. 确认 JAR 文件 + +在本地 Windows 验证 JAR 文件存在: +```powershell +# 检查文件 +Get-Item "E:\works\projects\<项目名>\...\target\*.jar" | Select-Object Name, Length, LastWriteTime +``` + +### 2. SFTP 上传 JAR 到构建服务器 + +通过 paramiko SSH 连接主节点 192.168.20.100,SFTP 上传 JAR 文件。 +JAR 大小通常 170-220MB,上传速度约 1.0 MB/s,耗时约 3-4 分钟。 + +### 3. 准备构建上下文 + +在远程服务器上: +- 创建临时目录 `/tmp/docker-build-{app_name}` +- 上传 Dockerfile +- 模板模式: 复制 JDK (`cp -r /opt/jdk1.8.0_202 {build_dir}/`) + +### 4. ACR 登录 + +```bash +# 张家口 ACR (推送目标) +echo 'Kilaa@6666' | docker login --username=kilaa --password-stdin registry.cn-zhangjiakou.aliyuncs.com + +# 杭州 ACR (拉取基础镜像,仅项目 Dockerfile 模式需要) +echo 'idurCT!rIq9EzISD' | docker login --username=10952138@qq.com --password-stdin jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com +``` + +### 5. Docker Build + +```bash +docker build -t 'registry.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation:{app_name}-ota-{date}-{version}' {build_dir} +``` + +### 6. Docker Push + +```bash +docker push 'registry.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation:{app_name}-ota-{date}-{version}' +``` + +### 7. 验证 + +```bash +docker pull registry.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation:{tag} +``` + +### 8. 清理 + +```bash +rm -rf /tmp/docker-build-{app_name} +``` + +## 镜像标签命名规则 + +格式: `{app_name}-ota-{YYYYMMDD}-{N}` + +| 字段 | 说明 | 示例 | +|------|------|------| +| app_name | 应用名 (kebab-case) | jjb-saas-safety-eval | +| ota | 环境前缀 (当前统一) | ota | +| YYYYMMDD | 打包日期 | 20260703 | +| N | 当日版本号 (从 1 递增) | 12 | + +完整示例: `jjb-saas-safety-eval-ota-20260703-12` + +## 已打包项目 + +### safety-eval-service (安全评估服务) + +| 配置项 | 值 | +|--------|-----| +| app_name | jjb-saas-safety-eval | +| JAR 路径 | `E:\works\projects\safety-eval-service\safety-eval-start\target\safety-eval-start-1.0-SNAPSHOT.jar` | +| Dockerfile | `E:\works\projects\safety-eval-service\Dockerfile` (项目自带) | +| 打包模式 | 项目 Dockerfile | +| 基础镜像 | `jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/pub/jdk:1.8.0_202` | +| 最近标签 | `jjb-saas-safety-eval-ota-20260703-12` | + +### zcloud-gbs-certificate (证书服务) + +| 配置项 | 值 | +|--------|-----| +| app_name | zcloud-gbs-certificate | +| JAR 路径 | `E:\works\projects\zcloud_gbs_certificate\start\target\start.jar` | +| Dockerfile | 模板 (Dockerfile.template) | +| 打包模式 | 模板 Dockerfile | +| 基础镜像 | centos:7 + JDK 1.8.0_202 | +| 最近标签 | `zcloud-gbs-certificate-ota-20260701-2` | + +## 通用打包脚本使用 + +```bash +# 使用项目自带 Dockerfile +python build_push.py \ + --jar "E:\works\projects\safety-eval-service\safety-eval-start\target\safety-eval-start-1.0-SNAPSHOT.jar" \ + --app jjb-saas-safety-eval \ + --version 13 \ + --project-dockerfile "E:\works\projects\safety-eval-service\Dockerfile" + +# 使用模板 Dockerfile +python build_push.py \ + --jar "E:\works\projects\zcloud_gbs_certificate\start\target\start.jar" \ + --app zcloud-gbs-certificate \ + --version 3 + +# 仅预览不执行 +python build_push.py --jar --app --version 1 --dry-run +``` + +## K8s 部署命令 + +```bash +# 更新已有部署的镜像 +kubectl set image deployment/{app_name} \ + {app_name}={full_image} -n jjb-dragon + +# 新建部署 +kubectl create deployment {app_name} \ + --image={full_image} -n jjb-dragon --replicas=1 + +# 查看部署状态 +kubectl get pods -n jjb-dragon | grep {app_name} + +# 查看 Pod 日志 +kubectl logs -f deployment/{app_name}-deploy -n jjb-dragon --tail=100 +``` + +## 常见问题 + +### Q: docker build 时拉取基础镜像失败 +A: 确认已登录杭州 ACR: `docker login jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com` + +### Q: docker push 时提示 unauthorized +A: 确认已登录张家口 ACR: `docker login registry.cn-zhangjiakou.aliyuncs.com` + +### Q: SSH 连接超时 +A: 主节点网络偶尔不稳定,重试即可。 + +### Q: 应用启动后报 Nacos 连接失败 +A: 项目 Dockerfile 模式下 ENTRYPOINT 不带 -D 参数,Nacos 配置由 application-{profile}.yml 提供。确认 `spring.profiles.active` 对应正确环境,且 Nacos 地址在目标部署环境可达。 + +### Q: 如何确认镜像已推送成功 +A: 在构建服务器执行 `docker pull {full_image}`,能拉取即成功。 + +## 环境依赖 + +- **Python 3.x** (本地 Windows) +- **paramiko** (Python SSH 库): `pip install paramiko` +- **构建服务器**: 192.168.20.100 (root/Zcloud@zcloud100) + - Docker 已安装 + - JDK 1.8.0_202 已安装在 `/opt/jdk1.8.0_202` + - Maven 3.8.8 已安装在 `/opt/maven` diff --git a/docs/build-tools2/build_push.py b/docs/build-tools2/build_push.py new file mode 100644 index 0000000..a757d08 --- /dev/null +++ b/docs/build-tools2/build_push.py @@ -0,0 +1,243 @@ +""" +GBS 通用镜像打包脚本 +==================== +从本地 Windows 执行: SFTP 上传 JAR -> 远程 Docker build -> ACR push + +支持两种打包模式: + 1. 项目 Dockerfile 模式 (--project-dockerfile): 使用项目自带的 Dockerfile + 2. 模板 Dockerfile 模式 (默认): 使用 CentOS 7 + JDK 模板 + +用法: + python build_push.py --jar --app <应用名> --version <版本号> + python build_push.py --jar --app <应用名> --version <版本号> --project-dockerfile + +示例: + # 使用项目自带 Dockerfile 打包 safety-eval-service + python build_push.py \ + --jar "E:\\works\\projects\\safety-eval-service\\safety-eval-start\\target\\safety-eval-start-1.0-SNAPSHOT.jar" \ + --app jjb-saas-safety-eval \ + --version 1 \ + --project-dockerfile "E:\\works\\projects\\safety-eval-service\\Dockerfile" + + # 使用模板 Dockerfile 打包 certificate + python build_push.py \ + --jar "E:\\works\\projects\\zcloud_gbs_certificate\\start\\target\\start.jar" \ + --app zcloud-gbs-certificate \ + --version 1 +""" + +import paramiko +import sys +import os +import time +import argparse +from datetime import datetime + +# ---- 读取配置 (从同目录 credentials.conf) ---- +def load_credentials(): + """从 credentials.conf 读取配置""" + cred_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "credentials.conf") + creds = {} + if os.path.exists(cred_path): + with open(cred_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line and not line.startswith('#') and '=' in line: + key, _, value = line.partition('=') + creds[key.strip()] = value.strip() + return creds + + +def ssh_exec(client, cmd, timeout=600): + """执行 SSH 命令并打印结果""" + print(f" > {cmd[:150]}{'...' if len(cmd) > 150 else ''}") + stdin, stdout, stderr = client.exec_command(cmd, timeout=timeout) + out = stdout.read().decode('utf-8', errors='replace') + err = stderr.read().decode('utf-8', errors='replace') + exit_code = stdout.channel.recv_exit_status() + if out.strip(): + for line in out.strip().split('\n')[-15:]: + print(f" {line}") + if err.strip(): + important = [l for l in err.strip().split('\n') + if not any(x in l for x in ['Downloading', 'Downloaded', 'Extracting', 'Progress'])] + if important: + print(f" [stderr] {'; '.join(important[:5])}") + return out.strip(), err.strip(), exit_code + + +def main(): + parser = argparse.ArgumentParser(description="GBS Docker Build & Push") + parser.add_argument('--jar', required=True, help='JAR 文件本地路径') + parser.add_argument('--app', required=True, help='应用名称 (用于镜像 tag)') + parser.add_argument('--version', default='1', help='版本后缀 (默认: 1)') + parser.add_argument('--prefix', default='ota', help='标签前缀 (默认: ota)') + parser.add_argument('--project-dockerfile', default=None, + help='项目自带 Dockerfile 路径 (不指定则使用模板模式)') + parser.add_argument('--dry-run', action='store_true', help='仅打印信息,不执行') + args = parser.parse_args() + + # ---- 加载凭据 ---- + creds = load_credentials() + if not creds: + print("ERROR: credentials.conf not found or empty!") + sys.exit(1) + + MASTER = creds['MASTER_HOST'] + SSH_USER = creds['SSH_USER'] + SSH_PASSWD = creds['SSH_PASSWD'] + ZJK_REGISTRY = creds['ZJK_REGISTRY'] + ZJK_REPO = creds['ZJK_REPO'] + ZJK_USER = creds['ZJK_USER'] + ZJK_PASS = creds['ZJK_PASS'] + HZ_REGISTRY = creds['HZ_REGISTRY'] + HZ_USER = creds['HZ_USER'] + HZ_PASS = creds['HZ_PASS'] + + # ---- 构建参数 ---- + jar_local = args.jar + app_name = args.app + version_suffix = args.version + env_prefix = args.prefix + use_project_dockerfile = args.project_dockerfile is not None + dockerfile_local = args.project_dockerfile if use_project_dockerfile else None + script_dir = os.path.dirname(os.path.abspath(__file__)) + template_dockerfile = os.path.join(script_dir, "Dockerfile.template") + + date_tag = datetime.now().strftime("%Y%m%d") + image_tag = f"{env_prefix}-{date_tag}-{version_suffix}" + full_image = f"{ZJK_REGISTRY}/{ZJK_REPO}:{app_name}-{image_tag}" + + # ---- 校验 ---- + if not os.path.exists(jar_local): + print(f"ERROR: JAR not found: {jar_local}") + sys.exit(1) + if use_project_dockerfile and not os.path.exists(dockerfile_local): + print(f"ERROR: Dockerfile not found: {dockerfile_local}") + sys.exit(1) + + jar_size_mb = os.path.getsize(jar_local) / 1024 / 1024 + build_dir = f"/tmp/docker-build-{app_name}" + mode = "项目 Dockerfile" if use_project_dockerfile else "模板 Dockerfile (CentOS 7 + JDK)" + + print("=" * 65) + print(" GBS Docker Build & Push") + print("=" * 65) + print(f" 模式: {mode}") + print(f" JAR: {jar_local} ({jar_size_mb:.1f} MB)") + if use_project_dockerfile: + print(f" Dockerfile: {dockerfile_local}") + print(f" App: {app_name}") + print(f" Tag: {image_tag}") + print(f" Image: {full_image}") + print(f" Registry: {ZJK_REGISTRY}/{ZJK_REPO}") + print(f" Target: {MASTER}") + print("=" * 65) + + if args.dry_run: + print("\n[DRY RUN] 以上为打包配置,未实际执行。") + return + + # ---- SSH 连接 ---- + client = paramiko.SSHClient() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + client.connect(MASTER, username=SSH_USER, password=SSH_PASSWD, timeout=30) + print("\n[1/6] SSH 连接成功") + + # ---- 准备远程目录 ---- + if use_project_dockerfile: + # 项目 Dockerfile 模式: JAR 路径为 ./start/target/start.jar + ssh_exec(client, f"rm -rf {build_dir} && mkdir -p {build_dir}/start/target") + else: + # 模板模式: JAR 路径为 ./target/*.jar,需复制 JDK + ssh_exec(client, f"rm -rf {build_dir} && mkdir -p {build_dir}/target") + + # ---- 上传 JAR ---- + print(f"\n[2/6] 上传 JAR ({jar_size_mb:.1f} MB)...") + sftp = client.open_sftp() + start = time.time() + last_pct = -1 + + def progress(transferred, total): + nonlocal last_pct + pct = int(transferred * 100 / total) + if pct >= last_pct + 10: + last_pct = pct + mb = transferred / 1024 / 1024 + elapsed = time.time() - start + speed = mb / elapsed if elapsed > 0 else 0 + print(f" {pct}% ({mb:.1f} MB) - {speed:.1f} MB/s") + + if use_project_dockerfile: + remote_jar = f"{build_dir}/start/target/start.jar" + else: + remote_jar = f"{build_dir}/target/{os.path.basename(jar_local)}" + + sftp.put(jar_local, remote_jar, callback=progress) + elapsed = time.time() - start + print(f" Done in {elapsed:.1f}s ({jar_size_mb/elapsed:.1f} MB/s)") + + # ---- 上传 Dockerfile ---- + print(f"\n 上传 Dockerfile...") + if use_project_dockerfile: + sftp.put(dockerfile_local, f"{build_dir}/Dockerfile") + else: + with open(template_dockerfile, 'r', encoding='utf-8') as f: + dockerfile_content = f.read() + stdin, stdout, stderr = client.exec_command(f"cat > {build_dir}/Dockerfile") + stdin.write(dockerfile_content) + stdin.channel.shutdown_write() + stdout.read() + + sftp.close() + + # ---- 模板模式: 复制 JDK ---- + if not use_project_dockerfile: + print("\n[3/6] 准备构建上下文 (复制 JDK)...") + ssh_exec(client, f"cp -r /opt/jdk1.8.0_202 {build_dir}/", timeout=120) + else: + print("\n[3/6] 构建上下文已就绪") + + ssh_exec(client, f"du -sh {build_dir}/") + + # ---- ACR 登录 ---- + print("\n[4/6] 登录 ACR...") + if use_project_dockerfile: + # 项目 Dockerfile 可能引用杭州 ACR 的基础镜像 + ssh_exec(client, f"echo '{HZ_PASS}' | docker login --username={HZ_USER} --password-stdin {HZ_REGISTRY}") + ssh_exec(client, f"echo '{ZJK_PASS}' | docker login --username={ZJK_USER} --password-stdin {ZJK_REGISTRY}") + + # ---- Docker build ---- + print("\n[5/6] 构建 Docker 镜像...") + out, err, code = ssh_exec(client, f"docker build -t '{full_image}' {build_dir}", timeout=300) + if code != 0: + print("ERROR: Docker build failed!") + client.close() + sys.exit(1) + + # ---- Push to ACR ---- + print("\n[6/6] 推送到张家口 ACR...") + out, err, code = ssh_exec(client, f"docker push '{full_image}'", timeout=600) + if code != 0: + print("ERROR: Docker push failed!") + client.close() + sys.exit(1) + + # ---- 验证 & 清理 ---- + ssh_exec(client, f"docker images | grep '{app_name}'") + ssh_exec(client, f"rm -rf {build_dir}") + client.close() + + # ---- 输出结果 ---- + print("\n" + "=" * 65) + print(" BUILD COMPLETE") + print("=" * 65) + print(f"\n 镜像地址:\n {full_image}\n") + print(f" K8s 部署:\n" + f" kubectl set image deployment/{app_name} \\\n" + f" {app_name}={full_image} -n jjb-dragon\n") + print("=" * 65) + + +if __name__ == "__main__": + main() diff --git a/docs/build-tools2/credentials.conf b/docs/build-tools2/credentials.conf new file mode 100644 index 0000000..8add384 --- /dev/null +++ b/docs/build-tools2/credentials.conf @@ -0,0 +1,55 @@ +# ============================================================ +# GBS 镜像打包 - 环境与账号配置 +# ============================================================ +# 本文件集中管理所有打包相关的连接信息和凭据, +# 方便 AI 会话快速加载上下文并执行打包。 +# ============================================================ + +# ---- 构建服务器 (Docker Host) ---- +MASTER_HOST=192.168.20.100 +SSH_USER=root +SSH_PASSWD=Zcloud@zcloud100 + +# ---- 张家口 ACR (主推送目标) ---- +# 用途: 所有项目的最终镜像推送目标 +ZJK_REGISTRY=registry.cn-zhangjiakou.aliyuncs.com +ZJK_REPO=kilaa/zcloud-gbs-operation +ZJK_USER=kilaa +ZJK_PASS=Kilaa@6666 +# VPC 内网地址 (K8s 集群内拉取镜像时使用): +# registry-vpc.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation + +# ---- 杭州 ACR (基础镜像拉取) ---- +# 用途: 部分项目 Dockerfile 使用的基础 JDK 镜像来源 +HZ_REGISTRY=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com +HZ_USER=10952138@qq.com +HZ_PASS=idurCT!rIq9EzISD + +# ---- 杭州 ACR (旧版推送, 已弃用) ---- +# 用途: 早期打包使用,现已统一推送到张家口 +HZ_OLD_REGISTRY=jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com +HZ_OLD_NAMESPACE=ali_img_ns + +# ---- Access Key (阿里云 API, 非 Docker 使用) ---- +AK_ID=LTAI5tF8GbtKizLAowJbAYmT +AK_SECRET=G0ZYeaZtnpxhp0bO1rPp4HPrq57LaT + +# ---- MySQL (Docker 容器) ---- +MYSQL_HOST=192.168.20.100 +MYSQL_PORT=33080 +MYSQL_USER=root +MYSQL_PASS=Mysql@zcloud33080 + +# ---- Nacos (K8s 内部) ---- +NACOS_ADDR=prod-nacos:8848 +NACOS_NAMESPACE=jjb-dragon +NACOS_NODEPORT=30290 + +# ---- K8s 集群 ---- +K8S_NAMESPACE=jjb-dragon +IMAGE_PULL_SECRET=image-pull-secret1 + +# ---- 构建环境 (主节点已安装) ---- +JDK_PATH=/opt/jdk1.8.0_202 +MAVEN_PATH=/opt/maven +MAVEN_VERSION=3.8.8 diff --git a/docs/build-tools2/projects.conf b/docs/build-tools2/projects.conf new file mode 100644 index 0000000..d577b4d --- /dev/null +++ b/docs/build-tools2/projects.conf @@ -0,0 +1,50 @@ +# ============================================================ +# GBS 项目打包配置清单 +# ============================================================ +# 每个项目的 JAR 路径、应用名、Dockerfile 类型等配置 +# AI 会话可直接读取此文件获取项目打包参数 +# ============================================================ + +# ---- safety-eval-service (安全评估服务) ---- +[safety-eval-service] +app_name = jjb-saas-safety-eval +jar_path = E:\works\projects\safety-eval-service\safety-eval-start\target\safety-eval-start-1.0-SNAPSHOT.jar +dockerfile = E:\works\projects\safety-eval-service\Dockerfile +dockerfile_type = project +base_image = jjb-registry-registry.cn-hangzhou.cr.aliyuncs.com/pub/jdk:1.8.0_202 +remote_jar_path = start/target/start.jar +image_size = ~910MB +latest_tag = jjb-saas-safety-eval-ota-20260703-12 +notes = 项目自带 Dockerfile,使用杭州 ACR 的 JDK 基础镜像 + +# ---- zcloud-gbs-certificate (证书服务) ---- +[zcloud-gbs-certificate] +app_name = zcloud-gbs-certificate +jar_path = E:\works\projects\zcloud_gbs_certificate\start\target\start.jar +dockerfile = (使用模板 Dockerfile.template) +dockerfile_type = template +base_image = centos:7 + JDK 1.8.0_202 +remote_jar_path = target/start.jar +image_size = ~882MB +latest_tag = zcloud-gbs-certificate-ota-20260701-2 +notes = 使用模板 Dockerfile (CentOS 7 + 本地 JDK 复制) + +# ---- 镜像标签命名规则 ---- +# 格式: {app_name}-ota-{YYYYMMDD}-{N} +# app_name: 应用名 (kebab-case) +# ota: 环境前缀 (当前统一为 ota) +# YYYYMMDD: 打包日期 +# N: 当日版本号 (从 1 递增) +# +# 示例: jjb-saas-safety-eval-ota-20260703-12 +# ^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^^^^^^ ^^ +# 应用名 环境 日期 版本号 + +# ---- 镜像仓库信息 ---- +[registry] +# 推送目标 +target = registry.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation +# K8s 集群内拉取地址 (VPC) +vpc = registry-vpc.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation +# 完整镜像地址示例 +example = registry.cn-zhangjiakou.aliyuncs.com/kilaa/zcloud-gbs-operation:jjb-saas-safety-eval-ota-20260703-12