Harbor 宿主机:39.106.135.88(与 Jenkins 同机或同 VPC)。ACK 集群�?*alien-ack-cluster**(华�? 北京)�?
本目录支�?单服务发�?* �?整体/多选发�?*(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_cloud/<服务�?:<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_cloud,镜像名:39.106.135.88/alien_cloud/<prodDir>:<tag>�?
新建项目与机器人账号步骤�?README-HARBOR-SETUP.md�?
基础镜像 my-openjdk8-ffmpeg:v1 需 �?push �?Harbor(如 39.106.135.88/alien_cloud/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)�?