migrate-to-teamcity
@jetbrains · 收录于 1 周前
Migrating CI/CD pipelines to TeamCity. Use when the user wants to migrate, convert, or switch to TeamCity from GitHub Actions (.github/workflows/) or Bamboo (bamboo-specs/*.yml), even if they only say "move our CI". Other CI systems (GitLab, Jenkins, CircleCI, Azure DevOps, Travis, Bitbucket) are not supported yet.
适合你,如果正从 GitHub Actions 或 Bamboo 迁移到 TeamCity
/ 下载安装
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code
~/.claude/skills/(项目级 .claude/skills/)Codex CLI
~/.codex/skills/Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add jetbrains/teamcity-cli/migrate-to-teamcity/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- jetbrains/teamcity-cli/migrate-to-teamcity/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify jetbrains/teamcity-cli/migrate-to-teamcity安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
114GitHub stars
~1.3K最小装载
~5.8K含声明引用
~5.8K文本包总量
镜像托管
怎么用
技能原文 SKILL.md
Migrate to TeamCity
Quick Start
teamcity migrate # detect + convert + write .tc.yml files teamcity migrate --dry-run --json # preview as structured JSON teamcity pipeline validate f.tc.yml # schema check teamcity project vcs create --url <repo-url> --auth anonymous -p ProjectId # create VCS root first teamcity pipeline create name -p ProjectId -f f.tc.yml --vcs-root <VcsRootId> teamcity run start PipelineId --watch
Run teamcity migrate from the repo root -- detection scans .github/workflows/ and bamboo-specs/ relative to the current directory.
Reading the report
- Needs review -- problems inside the generated YAML: TODO stubs, dropped steps, reusable-workflow placeholders. Fix these in the file before creating the pipeline.
- Manual setup needed -- work the converter could not do automatically; each item lands on one of two sides. YAML edits before
pipeline create: secrets entries (see the checklist), matrix expansion, expressionruns-on,container:/services:wiring (see gotchas.md). Server-side configuration after create: connections andif:-derived branch filters / execution conditions before the first run (they gate what executes); triggers and notifications at the end. Read each item and sort it accordingly. - Exit code 1 means at least one source failed to convert or one generated file failed schema validation -- files that converted cleanly are still written. Read the per-file ✓/⚠/✗ lines instead of treating exit 1 as total failure.
--jsonprints{"sources": [...], "results": [...]}to stdout; each result carriesoutputFile,yaml,needsReview,manualSetup, andvalidationError.
Gotchas
- Always
type: scriptfor./gradlewand./mvnw. TC'stype: gradle/type: mavenrunners use the agent's version, not the project's. This causes real build failures. - Schema valid does not mean pipeline works. Migration is not done until builds pass.
- Private repos: use a GitHub App connection, not a PAT.
teamcity project connection create github-app -p <project>→teamcity project connection authorize <connection-id> -p <project>→ install the App on the repo/org (the create output prints the install link and these exact commands) →teamcity project vcs create --url <repo-url> --auth token --connection-id <connection-id> -p <project>. For public repos--auth anonymousworks. Note: the App manifest flow andauthorizeopen a browser; in headless runs pass existing App credentials with--no-manifest --app-id <id> --client-id <id> --private-key-file <pem> --stdin(pipe the client secret to stdin; without--stdinit is not read) -- or use SSH deploy keys (teamcity project ssh uploadwith agit@github.com:URL), the fully non-interactive path. - Secrets, triggers, and branch filters are always manual. The converter flags them but cannot create them. Use
teamcity project token putfor secrets. Configure triggers in TC UI. - VCS root must exist before pipeline create.
teamcity pipeline createtakes--vcs-root <id>, not a URL. Create it first withteamcity project vcs create. - Default branch defaults to
main. Pass--branch refs/heads/mastertoteamcity project vcs createif the repo usesmaster. - Unknown actions/tasks become stubs. Read the action's source, write an equivalent shell script. Most actions are thin CLI wrappers. See [mappings](references/mappings.md).
Workflow
Goal: get all pipeline jobs green on the TC server, not just generate valid YAML.
Copy this checklist and check off items as you complete them:
Migration progress:
- [ ] Convert: run `teamcity migrate` from the repo root
- [ ] Fix every "Needs review" item, plus "Manual setup" items needing YAML edits (matrix expansion, expression `runs-on`, container/services) -- see mappings.md and gotchas.md
- [ ] Wire up secrets in the YAML: the converter rewrites `${{ secrets.X }}` to `%X%` but does not define it -- store the value (`teamcity project token put <project> <value>`) and add `X: "credentialsJSON:<uuid>"` under the top-level `secrets:` block (see schema.md)
- [ ] Validate: `teamcity pipeline validate <file>` -- only proceed when it passes
- [ ] Create VCS root (`teamcity project vcs create`), then `teamcity pipeline create <name> -p <project> -f <file> --vcs-root <id>`
- [ ] Set up the remaining runtime "Manual setup needed" items before running: registry/cloud connections the steps reference (the first run fails without them), and any `if:`-condition items -- gate converted deploy/release steps via branch filter, execution condition, or a guard in the script so the first run cannot deploy from the wrong branch
- [ ] Run: `teamcity run start <id> --watch`; on failure read `teamcity run log <id> --failed --raw`, fix, `teamcity pipeline push`, re-run until green
- [ ] Do the trigger-only "Manual setup needed" items: triggers, notifications
- [ ] Report: what migrated, step reduction, what remains manual
References
- [Mappings](references/mappings.md) -- GitHub Actions and Bamboo to TeamCity translation tables
- [Schema](references/schema.md) -- TC pipeline YAML quick reference
- [Gotchas](references/gotchas.md) -- skip list, matrix expansion, troubleshooting, manual setup items
按 Apache-2.0 许可原样转载,未经改动 · 在 GitHub 查看 →
评论
登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。
…