制品迁移工具
artifacts migration tool是一个命令行工具,可以让您将构建成果从一个存储迁移到另一个存储。
目前,该工具仅接受 Amazon S3 作为迁移目标。
下载 Artifacts Migration Tool
您可以从 Project Settings | Artifacts Storage 页面下载此工具。
请注意,您需要在安装了 TeamCity 服务器的同一台机器上安装此工具。
配置文件
在您可以运行 artifacts migration 工具之前,您需要在 config/application.properties
文件中指定以下设置。
teamcity.storage.migration.host
— 这是 TeamCity 服务器的地址(协议,主机,和端口)。teamcity.storage.migration.artifact.directories
— 本地 TeamCity 工件存储的绝对路径。 如果您的 TeamCity 服务器使用多个目录作为构件存储,使用分号(;)作为分隔符。teamcity.storage.migration.access.token
— 这是 TeamCity 的 认证令牌。 令牌必须具有足够的权限来访问构件储存器。 导航至 Your Profile | Access Tokens 以创建新的令牌。
服务器 URL 和默认的工件存储路径可以在 Administration | Global Settings 页面中找到。
下面的片段展示了一个示例 application.properties
文件的内容。
AWS 特定设置
要将工件迁移到或从 Amazon S3 buckets,工件迁移工具需要使用存储在服务器机器上的 AWS 凭据。 请参阅此文档文章以获取更多信息:为开发设置 AWS 凭证和区域。
如果一个项目有多个需要迁移并需要不同凭据的 S3 兼容存储,请使用 自定义 AWS 配置文件 来提供这些凭据。 要将凭证文件中的特定配置文件与特定存储关联,将以下属性添加到工具的 config/application.properties
文件中:
<FEATURE_ID>
是来自 存储设置 页面的存储 ID。<PROFILE_NAME>
是来自 AWS 凭据文件的配置文件名称。
目标存储设置
迁移工具将工件复制或移动到当前激活的存储空间。 在您运行迁移过程之前,请转到想要迁移其工件的项目的 项目设置 | 工件存储 页面,并激活目标存储。
运行迁移工具
打开位于 <artifacts_migration_tool>/bin 文件夹的终端,并使用 --项目
( -p
)参数运行 "migrate" (Linux,macOS)或 "migrate.bat" (Windows)文件。 这个参数接受 external project IDs 作为值。
您可以添加 --递归
( -r
)参数,以指定该工具是否应递归处理所选项目的所有子项目。
如果您需要从云存储而不是本地目录迁移工件,请指定附加的 --源
( -s
)参数,并传递一个存储 ID 作为值。
当您第一次在此模式下运行迁移工具时,它会检测应被复制的构件,保存迁移计划,并询问您下一步的操作。
更新迁移计划。
显示迁移计划。
将源存储中的工件复制到目标存储中。
撤销迁移。 此选项会从目标存储中删除复制的构件。 在出现未完成或中断的迁移情况下,您可以选择此选项。
从源存储中删除工件。
忘记迁移计划。 如果您指定的迁移参数不正确,可以使用此选项来丢弃保存的迁移计划。
要一次性迁移工件(无需工具进行确认或输入),请通过添加以下命令来指定所需的迁移步骤。
--create-migration-plan
— 创建或更新迁移计划。--show-migration-plan
— 显示迁移计划。--start-migration
— 从源存储复制工件到目标存储。--revert-migration
— 在迁移不完整或中断的情况下,从目标存储中移除复制的构件。--remove-artifacts-in-source
— 从源存储中删除复制的工件。 未被复制的构件将不会被移除。--reset-migration-plan
— 废弃当前的迁移计划。
例如,以下命令将给定的 Amazon S3 存储中的工件移至当前活动的存储。
额外配置属性
您可以将以下属性添加到 配置文件 中。
teamcity.storage.migration.processing.threadCount
— 工具应使用的线程数量进行处理。 默认值为 4。teamcity.storage.migration.failWhenCannotAccessStorageSettings
— 控制如果工具无法从 TeamCity 服务器获取存储设置,迁移是否应该失败。 这可能是由于权限不足而发生的。 默认值为 false。teamcity.storage.migration.s3.threadCount
—— 工具应使用的线程数来上传数据至 S3。 默认值为 4。teamcity.storage.migration.s3.forceVirtualHostAddressing
— 指定工具是否应使用 S3 URL 地址的虚拟主机风格,而不是已弃用的路径风格。 默认值为 true。teamcity.storage.migration.s3.upload.numberOfRetries
— 如果在向 S3 上传数据时遇到错误,此工具所做出的尝试次数。 默认值为 5。teamcity.storage.migration.s3.upload.retryDelayMs
— 尝试之间初始延时,单位为毫秒。 默认值为 1000。