目标:一次 Job 支持 whole / single / multi,把预生产 Harbor 镜像晋升到生产 tag,并可选批量更新 ACK。
不拉 alien-* 业务源码、不 Maven、不 docker build。
与单服务 Gateway-K8s 的区别:Whole 管七个服务组合;日常只发 gateway 用 gateway/Jenkinsfile 即可。
| 项 | 建议 | 你截图 |
|---|---|---|
| 描述 | 预生产分支 → Harbor 晋升 → ACK;whole/single/multi |
✓ 已写,可保留 |
| 参数化构建过程 | 不必勾 | 未勾 ✓;DEPLOY_MODE 等在 Jenkinsfile parameters {} 里 |
| 丢弃旧的构建 | 建议勾,保留 15 | 与 Jenkinsfile buildDiscarder 一致 |
| 不允许并发构建 | 建议勾 | 未勾 → 建议勾,避免两次 whole 同时改 ACK |
| Gogs / 触发器 | 手动发版可全不勾 | ✓ |
首次保存后请 立即构建一次,之后左侧会出现 「Build with Parameters」。
| 项 | 应填 | 你截图 |
|---|---|---|
| 定义 | 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 |
Plan → 解析 DEPLOY_MODE,打印将晋升的服务列表
Promote images → docker pull/tag/push(七个或子集)
Deploy to ACK → DEPLOY_STRATEGY≠skip 且非 DRY_RUN 时 kubectl set image
| 模式 | 行为 | 还需填写 |
|---|---|---|
| whole | 七个 Java 服务全部晋升 | 忽略 SINGLE / MULTI_* |
| single | 只晋升一个 | SINGLE_SERVICE=gateway 等 |
| multi | 勾选多个 | 至少勾一项 MULTI_gateway … MULTI_dining |
| 参数 | 说明 |
|---|---|
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 |
DEPLOY_MODE=single,SINGLE_SERVICE=gateway,DRY_RUN=true → 看 PlanDRY_RUN=false,DEPLOY_STRATEGY=skip → 只晋升 gateway 镜像DEPLOY_MODE=whole,DEPLOY_STRATEGY=skip → 七个服务只推 HarborDEPLOY_STRATEGY=rolling → 更新 ACK| 场景 | 用哪个 Job |
|---|---|
| 只发 gateway | Gateway-K8s(更简单) |
| 一次发七个 / 多选两三个 | Alien-Cloud-K8s-Whole |
| 与 prod-promote 习惯一致 | Whole 的 DEPLOY_MODE 同 Jenkinsfile-prod-promote-from-uat |
勿再建 promote-image Job(与 whole 脚本重复),二选一即可。
39.105.153.68/alien_cloud/<服务>:<SOURCE_TAG>(可只推部分,但 whole 会对缺失镜像 pull 失败)insecure-registries + harbor-robot-alien 已配置uat-20260202 分支已包含最新 whole/JenkinsfileMissingContextVariableException: FilePath is missing日志若在 Start of Pipeline 后立刻出现 [Pipeline] load 然后失败,说明 Gitea 上仍是旧版 Jenkinsfile(在 pipeline { agent any 之外顶层写了 load)。
处理:
docs/jenkins/produ/whole/Jenkinsfile push 到 Job 使用的分支(如 uat-20260202)[Pipeline] agent、Checkout / sparse,再在 Plan 阶段里 load