# UAT Jenkins 流水线(Pipeline script from SCM) ## Jenkins Job 配置 | 项 | 值 | |----|-----| | 定义 | **Pipeline script from SCM** | | SCM | Git `http://8.152.195.41:3000/alien/alien_cloud` | | 分支 | `*/uat-20260202`(与你们实际 UAT 分支一致) | | **Script Path** | **`docs/jenkins/uat/Jenkinsfile`** | | SCM 凭据 | `zhanghaomimapingzheng` | 保存后 **Build with Parameters 构建一次**,加载新参数(`HARBOR_PUSH_PARALLEL`、`FORCE_UPDATE` 默认 false 等)。 **`GIT_BRANCH` 填分支名即可**,例如 `uat-20260202`;不要填 `origin/uat-20260202`(会报 `Couldn't find any revision to build`)。脚本已自动去掉误填的 `origin/` 前缀。 ## 与旧内嵌脚本的区别 | 项 | 旧内嵌脚本 | 本脚本 | |----|-----------|--------| | Maven 本地仓库 | `${WORKSPACE}/.m2/repository`(冷缓存) | `/var/jenkins_home/.m2/repository`(持久共享) | | 依赖镜像 | 仅 Maven Central | 阿里云 mirror + Central | | 构建前删 BOM | `rm -rf spring-cloud-dependencies` | 无 | | `FORCE_UPDATE` | 默认 **true** | 默认 **false** | | Maven 并行 | 无 | `-T 1C -Dmaven.artifact.threads=8` | | Harbor 归档 | docker pull/tag/push | **Harbor API 打 tag**(同 digest,可并行;与生产 promote 相同机制) | | Harbor push | 串行 | 上下文准备 + API 归档可并行;`docker build/push` 经 `flock` 串行 | | Docker build | BuildKit(需 buildx) | 经典 builder + 失败重试 3 次(节点无 buildx 时稳定) | | Deploy | 串行 7 次 `sh` | `parallel` | | 并发构建 | 允许(产生 `@2` 工作区) | `disableConcurrentBuilds()` | | Harbor prune | bash `mapfile`(易失败) | POSIX `sh` + `catchError` | | 构建历史 | 15 | **5** | ## 验证新脚本已生效 构建日志 Maven 阶段应出现: ```text mkdir -p /var/jenkins_home/.m2/repository mvn clean package ... -T 1C -Dmaven.artifact.threads=8 ... -Dmaven.repo.local=/var/jenkins_home/.m2/repository ``` **不应**再出现: ```text rm -rf .../spring-cloud-dependencies/Hoxton.SR1 -Dmaven.repo.local=/var/jenkins_home/workspace/.../.m2/repository ``` Harbor 相关说明见 [README-UAT-HARBOR-PUSH.md](../README-UAT-HARBOR-PUSH.md)。