SuperAPI AI 工具集

migrate-to-teamcity

部署与运维

查看项目

更新于 10-15 23:31

技能介绍

用途:把现有 CI/CD 流水线迁移到 TeamCity,支持从 GitHub Actions(.github/workflows/)和 Bamboo(bamboo-specs/)转换。需在仓库根目录运行 teamcity migrate,检测相对当前目录的源文件,完成检测、转换并写出 .tc.yml。可用 teamcity migrate --dry-run --json 预览结构化结果,用 teamcity pipeline validate f.tc.yml 做 schema 校验。

主要能力:转换器会生成 YAML 并输出报告,区分“Needs review”(生成的 YAML 内问题,如 TODO 占位、被丢弃的步骤、可复用工作流占位)与“Manual setup needed”(转换器无法完成的工作)。--json 输出 {"sources": [...], "results": [...]},每条结果含 outputFile、yaml、needsReview、manualSetup、validationError。退出码 1 表示至少一个源转换失败或生成文件未通过校验,但转换成功的文件仍会写出,应看逐文件 ✓/⚠/✗ 行。

使用方式:先修完 Needs review 与需改 YAML 的 Manual setup 项(矩阵展开、表达式 runs-on、container/services),再配置密钥(转换器把 ${{ secrets.X }} 改写为 %X% 但不定义,需 teamcity project token put 存值并在顶层 secrets 块加 X: "credentialsJSON:<uuid>"),校验通过后创建 VCS root(teamcity project vcs create),再 teamcity pipeline create name -p ProjectId -f f.tc.yml --vcs-root <VcsRootId>,最后 teamcity run start PipelineId --watch,失败时用 teamcity run log <id> --failed --raw 排查,改后 teamcity pipeline push 重跑。

限制与注意:./gradlew 和 ./mvnw 必须写 type: script,TC 的 gradle/maven runner 会用 agent 版本而非项目版本,会导致构建失败;schema 通过不代表流水线可用,构建通过才算迁移完成。密钥、触发器、分支过滤始终需人工配置。VCS root 必须先于 pipeline create 存在,且 create 接收 --vcs-root <id> 而非 URL;默认分支为 main,仓库用 master 时传 --branch refs/heads/master。私有仓库建议用 GitHub App 连接而非 PAT,公共仓库用 --auth anonymous。未知 action/task 会变成占位,需读其源码写等价 shell 脚本。首次运行前需配置步骤引用的 registry/cloud 连接,并用分支过滤、执行条件或脚本守卫限制 if: 条件转换出的部署步骤。