|
|
hace 2 semanas | |
|---|---|---|
| .. | ||
| produ | hace 2 semanas | |
| Jenkinsfile-prod-promote-from-uat.groovy | hace 4 semanas | |
| Jenkinsfile-uat-build-deploy.groovy | hace 2 semanas | |
| README-UAT-HARBOR-PUSH.md | hace 2 semanas | |
在现有 UAT Maven + jar 部署 流水线上增加可选阶段,把业务镜像推到:
39.105.153.68/alien_cloud/<服务名>:uat-build-<Jenkins构建号>
生产侧 Gateway-K8s / Alien-Cloud-K8s-Whole 使用同一 tag 作为 SOURCE_TAG 做晋升。
脚本:docs/jenkins/Jenkinsfile-uat-build-deploy.groovy
UAT Jenkins Job(88:30003)
1. Checkout(拉 alien_cloud 预生产分支)
2. Maven Build(mvn clean package)
3. Push images to Harbor(PUSH_TO_HARBOR=true 时)
docker build → push 39.105.153.68/alien_cloud/gateway:uat-build-42
4. Deploy Services(拷 jar 到 /app_deploy_uat + docker restart,与现网一致)
Harbor Web(153.68)出现 gateway 仓库
生产 Jenkins(同机,另一文件夹)
Gateway-K8s / Whole:SOURCE_TAG=uat-build-42 → produ-xxx → ACK
alien_cloud 已存在alien_cloud/base/openjdk8-ffmpeg:v1 已 pushrobot$alien_cloud+jenkins-k8s 具备 推送 权限| ID | 类型 | 内容 |
|---|---|---|
harbor-robot-alien |
Username with password | 用户 robot$alien_cloud+jenkins-k8s,密码=Token |
zhanghaomimapingzheng |
Git | UAT Job SCM 已在使用 |
# 探测 Registry
curl -sI http://39.105.153.68/v2/
# 登录(与凭据一致)
echo '<TOKEN>' | docker login 39.105.153.68 -u 'robot$alien_cloud+jenkins-k8s' --password-stdin
若 HTTP + IP 访问,需在 运行 docker 的宿主机 /etc/docker/daemon.json 增加:
{
"insecure-registries": ["39.105.153.68"]
}
然后 systemctl restart docker(注意:若在 153.68 上误执行会影响 Harbor,应在 88 Jenkins 节点 配置)。
本地修改 docs/jenkins/Jenkinsfile-uat-build-deploy.groovy 后,push 到 UAT Job 使用的分支(如 uat-20260202)。
| 项 | 值 |
|---|---|
| 定义 | Pipeline script from SCM |
| 仓库 | http://8.152.195.41:3000/alien/alien_cloud |
| 分支 | */uat-20260202(与你们一致) |
| Script Path | docs/jenkins/Jenkinsfile-uat-build-deploy.groovy |
| SCM 凭据 | Git(不要选 Harbor 机器人) |
保存后先 立即构建一次,加载新参数。
| 参数 | 首次试跑建议 |
|---|---|
GIT_BRANCH |
uat-20260202 |
FORCE_UPDATE |
按需 |
PUSH_TO_HARBOR |
true |
HARBOR_PUSH_SCOPE |
gateway-only |
HARBOR_REGISTRY |
39.105.153.68 |
HARBOR_PROJECT |
alien_cloud |
构建成功后日志末尾应有:
>>> pushed 39.105.153.68/alien_cloud/gateway:uat-build-<N>
>>> Prod promote: SOURCE_TAG=uat-build-<N>
记下 <N> = Jenkins 构建号。
浏览器打开:http://39.105.153.68/harbor/ → 项目 alien_cloud → 镜像仓库应出现 gateway,标签 uat-build-<N>。
或命令行:
curl -s -u 'robot$alien_cloud+jenkins-k8s:<TOKEN>' \
'http://39.105.153.68/v2/alien_cloud/gateway/tags/list'
在 Gateway-K8s 或 Alien-Cloud-K8s-Whole:
| 参数 | 值 |
|---|---|
SOURCE_TAG |
uat-build-<N>(与 UAT 构建号一致) |
DEPLOY_STRATEGY |
先 skip(只晋升 Harbor),再 rolling |
DEPLOY_MODE |
单服务用 single + gateway |
| 参数 | 说明 |
|---|---|
PUSH_TO_HARBOR |
false=保持旧行为,只 jar 部署;true=增加 Harbor push |
HARBOR_PUSH_SCOPE |
gateway-only 只推 gateway;all-java-services 推七个服务(Maven 须全部打包成功) |
UAT_HARBOR_IMAGE_TAG |
自动 uat-build-${BUILD_NUMBER},无需手填 |
| 现象 | 处理 |
|---|---|
not found pull 基础镜像 |
确认 Harbor 有 base/openjdk8-ffmpeg:v1 |
Login Succeeded 后 push 失败 |
机器人是否有项目 push 权限 |
x509 / 证书错误 |
88 上 insecure-registries 或 HTTPS + ca.crt |
| Harbor 仍无 gateway | 是否勾选了 PUSH_TO_HARBOR;Maven 是否打出 alien-gateway/target/*.jar |
| 生产 Whole 仍 not found | SOURCE_TAG 必须与 UAT 构建日志中的 uat-build-<N> 完全一致 |
docker restart UAT 容器,不影响现有 UAT 访问方式。PUSH_TO_HARBOR=false。