README-JOB-WHOLE.md 4.3 KB

Alien-Cloud-K8s-Whole Job 配置清单

目标:一次 Job 支持 whole / single / multi,把预生产 Harbor 镜像晋升到生产 tag,并可选批量更新 ACK。
alien-* 业务源码、 Maven、 docker build。

与单服务 Gateway-K8s 的区别:Whole 管七个服务组合;日常只发 gateway 用 gateway/Jenkinsfile 即可。


常规(General)

建议 你截图
描述 预生产分支 → Harbor 晋升 → ACK;whole/single/multi ✓ 已写,可保留
参数化构建过程 不必勾 未勾 ✓;DEPLOY_MODE 等在 Jenkinsfile parameters {}
丢弃旧的构建 建议勾,保留 15 与 Jenkinsfile buildDiscarder 一致
不允许并发构建 建议勾 未勾 → 建议勾,避免两次 whole 同时改 ACK
Gogs / 触发器 手动发版可全不勾

首次保存后请 立即构建一次,之后左侧会出现 「Build with Parameters」


流水线(Pipeline)

应填 你截图
定义 Pipeline script from SCM
Repository URL http://8.152.195.41:3000/alien/alien_cloud 若显示 alien cloud(空格)请改为 alien_cloud
Credentials dujian (git) ✓;不要 Harbor 机器人
分支 */uat-20260202 ✓(与预生产分支一致)
Script Path docs/jenkins/produ/whole/Jenkinsfile
轻量级检出 勾选 ✓;脚本内再稀疏拉 docs/jenkins/produ/_shared/

凭据(全局,非 SCM):

ID 用途
harbor-robot-alien docker login 153.68
ack-kubeconfig-alien kubectl

Jenkinsfile 三阶段(与界面无关,自动执行)

Plan            → 解析 DEPLOY_MODE,打印将晋升的服务列表
Promote images  → docker pull/tag/push(七个或子集)
Deploy to ACK   → DEPLOY_STRATEGY≠skip 且非 DRY_RUN 时 kubectl set image

参数用法(Build with Parameters)

DEPLOY_MODE

模式 行为 还需填写
whole 七个 Java 服务全部晋升 忽略 SINGLE / MULTI_*
single 只晋升一个 SINGLE_SERVICE=gateway
multi 勾选多个 至少勾一项 MULTI_gatewayMULTI_dining

镜像 tag(七个服务共用同一 SOURCE_TAG)

参数 说明
SOURCE_TAG UAT 已在 Harbor 的 tag,推荐 uat-latest;历史 uat-build-<N>
TARGET_TAG 留空 → produ-<构建号>;七个服务打同一生产 tag
DEPLOY_STRATEGY skip 只推 Harbor;rolling 滚更 ACK;canary 灰度
DRY_RUN 只 Plan,不 pull/push

推荐试跑顺序

  1. DEPLOY_MODE=singleSINGLE_SERVICE=gatewayDRY_RUN=true → 看 Plan
  2. 同上,DRY_RUN=falseDEPLOY_STRATEGY=skip → 只晋升 gateway 镜像
  3. DEPLOY_MODE=wholeDEPLOY_STRATEGY=skip → 七个服务只推 Harbor
  4. 确认 Harbor 后,DEPLOY_STRATEGY=rolling → 更新 ACK

Whole Job vs 七个单服务 Job

场景 用哪个 Job
只发 gateway Gateway-K8s(更简单)
一次发七个 / 多选两三个 Alien-Cloud-K8s-Whole
与 prod-promote 习惯一致 Whole 的 DEPLOY_MODEJenkinsfile-prod-promote-from-uat

勿再建 promote-image Job(与 whole 脚本重复),二选一即可。


前置条件

  1. UAT 已将七个镜像推到 39.105.153.68/alien_cloud/<服务>:<SOURCE_TAG>(可只推部分,但 whole 会对缺失镜像 pull 失败)
  2. Jenkins 节点(88)insecure-registries + harbor-robot-alien 已配置
  3. Gitea 上 uat-20260202 分支已包含最新 whole/Jenkinsfile

故障:MissingContextVariableException: FilePath is missing

日志若在 Start of Pipeline 后立刻出现 [Pipeline] load 然后失败,说明 Gitea 上仍是旧版 Jenkinsfile(在 pipeline { agent any 之外顶层写了 load)。

处理:

  1. 将仓库中最新 docs/jenkins/produ/whole/Jenkinsfile push 到 Job 使用的分支(如 uat-20260202
  2. Jenkins Job 点 保存 后重新构建(不要 Replay 旧运行)
  3. 成功日志应先出现 [Pipeline] agentCheckout / sparse,再在 Plan 阶段里 load