Harbor 宿主机:39.105.153.68(Web:http://39.105.153.68/harbor/)。Jenkins 示例:39.106.135.88:30003。ACK:alien-ack-cluster(华北2 北京)。
本目录支持 单服务发版 与 整体/多选发版(Harbor + ACK);与宿主机 docker compose 晋升流水线(Jenkinsfile-prod-promote-from-uat.groovy)并行存在,互不替代,直到 ACK 全量切流。
日常发版不需要。 流水线在 k8s-produ-lib.groovy 里自动完成:
docker login 39.106.135.88(凭据 harbor-robot-alien)docker build → 打 tag 39.106.135.88/alien/<服务名>:<tag>docker push 到 Harborkubectl set image 让 ACK 拉同一 tag运维仅需一次性在 Harbor Web(或 API)完成:alien 项目、机器人账号、(可选)镜像保留策略。之后查镜像/删旧 tag/排障时仍可打开 Harbor UI,不是发版必经步骤。
_shared/k8s-produ-lib.groovy 是什么?能单独部署吗?| 文件 | 角色 | Jenkins Script Path 是否指向它 |
|---|---|---|
produ/<服务>/Jenkinsfile |
入口(Jenkins 只认这个名字) | 是,每个 Job 指向各自路径 |
_shared/k8s-produ-lib.groovy |
共享函数库(checkout、mvn、Harbor、kubectl) | 否,由入口 load '.../k8s-produ-lib.groovy' 引用 |
_shared/service-registry.groovy |
七个服务列表 + whole/multi 筛选 | 否,供 whole/Jenkinsfile 使用 |
每个微服务 Job 仍是 单独一条流水线(例如只构建 gateway);共享库是为避免 7 份重复脚本,不代替 Jenkinsfile。
| Jenkins Job(建议名) | Script Path | 粒度 |
|---|---|---|
gateway-k8s … dining-k8s |
docs/jenkins/produ/<prodDir>/Jenkinsfile |
仅该服务(Maven -pl alien-xxx) |
alien-cloud-k8s-whole |
docs/jenkins/produ/whole/Jenkinsfile |
whole / single / multi(参数 DEPLOY_MODE,语义同 prod-promote) |
整体 Job 一次 mvn package 打全仓库,再按选中服务依次 build/push/deploy;单服务 Job 只打对应模块,适合热修复单个服务。
是,推荐选「文件夹」。
| 类型 | 用途 |
|---|---|
| 文件夹 | 独立命名空间,其下可建多个 流水线 任务,例如 gateway-k8s、store-k8s,名称可与其他视图重复 |
| 流水线 | 真正执行构建的 Job,每个微服务一条 |
| 多分支流水线 | 按 Git 分支自动建子 Job;若预生产固定一条分支(如 uat-20260202),用普通流水线 + 参数 GIT_BRANCH 更简单 |
建议结构:
alien-cloud-produ-K8S-from-uat/ ← 文件夹(你截图中的名称)
├── alien-cloud-k8s-whole/ ← 流水线,Script Path: docs/jenkins/produ/whole/Jenkinsfile(整体/多选)
├── gateway-k8s/ ← 流水线,Script Path: docs/jenkins/produ/gateway/Jenkinsfile
├── store-k8s/
├── second-k8s/
├── store-platform-k8s/
├── lawyer-k8s/
├── job-k8s/
└── dining-k8s/
不要在文件夹里再选「文件夹」类型去套微服务——微服务一级用 流水线 即可。
可以,且推荐。
每个 *-k8s 流水线 Job 配置:
http://8.152.195.41:3000/alien/alien_cloud(与现网一致)*/uat-20260202 或 */你的预生产分支Script Path(按服务不同):
docs/jenkins/produ/gateway/Jenkinsfiledocs/jenkins/produ/store/Jenkinsfile凭据:zhanghaomimapingzheng(与 UAT 流水线一致)
构建触发:可选手动;稳定后加「上游 UAT 构建成功」触发
与 Jenkinsfile-prod-promote-from-uat.groovy 的关系:
| 维度 | prod-promote-from-uat | produ K8S 流水线 |
|---|---|---|
| 制品 | UAT 目录 jar → 生产机 compose | Maven jar → 镜像 → Harbor → ACK |
| 发版粒度 | 单 Job 内 whole/single/multi | whole Job + 每服务一个 Job |
| 灰度 | 无 | 支持 Ingress 权重灰度(见 README-ACK-GRAY-RELEASE.md) |
| prodDir | 模块 | Jenkins Script Path | ACK Deployment(默认) |
|---|---|---|---|
| gateway | alien-gateway | docs/jenkins/produ/gateway/Jenkinsfile |
gateway |
| store | alien-store | docs/jenkins/produ/store/Jenkinsfile |
store |
| second | alien-second | docs/jenkins/produ/second/Jenkinsfile |
second |
| store-platform | alien-store-platform | docs/jenkins/produ/store-platform/Jenkinsfile |
store-platform |
| lawyer | alien-lawyer | docs/jenkins/produ/lawyer/Jenkinsfile |
lawyer |
| job | alien-job | docs/jenkins/produ/job/Jenkinsfile |
job |
| dining | alien-dining | docs/jenkins/produ/dining/Jenkinsfile |
dining |
| (整体) | 全部七个 | docs/jenkins/produ/whole/Jenkinsfile |
按 DEPLOY_MODE |
未纳入本目录(属其他仓库或镜像名不同,需另建 Job):
py_gateway_produ、py_contract_produ、py_esign_produ(镜像 alien_gateway:local 等)xxl-job-admin-produ、Harbor 自身组件在 Jenkins 全局或文件夹 凭据 中准备:
| 凭据 ID(示例,按实际改 Jenkinsfile 内常量) | 类型 | 用途 |
|---|---|---|
zhanghaomimapingzheng |
Username/password | Git 拉取 |
harbor-robot-alien |
Username/password | docker login 39.106.135.88 |
ack-kubeconfig-alien |
Secret file | KUBECONFIG,内容来自 ACK「连接信息」下载 |
Jenkins 节点需具备:
mvn、docker(能访问 Harbor 443/80)、kubectldocker.sock,并将 kubectl 与 kubeconfig 挂入或装在镜像内Harbor 上建议建项目 alien,镜像名:39.106.135.88/alien/<prodDir>:<tag>。
基础镜像 my-openjdk8-ffmpeg:v1 需 先 push 到 Harbor(如 39.106.135.88/alien/base/openjdk8-ffmpeg:v1),并在 Job 参数 BASE_IMAGE 中填写,否则 ACK 节点拉不到。
详述见同目录 README-ACK-GRAY-RELEASE.md(集群接入、命名空间、Ingress 灰度、节点 Unknown 排查)。
K8S 清单示例:k8s/examples/。
各服务 Jenkinsfile 共用库 docs/jenkins/produ/_shared/k8s-produ-lib.groovy,主要参数:
GIT_BRANCH:预生产分支IMAGE_TAG:默认 build-${BUILD_NUMBER},可填 uat-20260202-123DEPLOY_STRATEGY:rolling(直接替换)或 canary(Ingress 权重)CANARY_WEIGHT:灰度流量百分比(仅 canary)K8S_NAMESPACE:默认 alien-produ首次部署前在 ACK 应用 k8s/examples/namespace.yaml 与各服务 deployment-*.yaml(或让流水线 kubectl apply 首次全量 apply)。