【问题标题】:TeamCity: How to put unversioned configuration files in a checked-out repository?TeamCity:如何将未版本化的配置文件放在签出的存储库中?
【发布时间】:2014-08-15 20:21:55
【问题描述】:

我正在使用 Git 存储库对我的应用程序进行版本控制。我的项目结构是这样的,我使用的是本地化到应用程序运行的每个环境的配置文件。这些本地配置文件包含诸如 SQL 连接字符串和其他与每个环境相关的信息(每个环境都有自己的SQL Server 数据库,包括 Teamcity 中的测试环境)。这些文件不是存储库的一部分,而是在创建新环境时新创建的。在这个范例中,TeamCity 是另一个环境,我为 TeamCity 创建了一个配置文件,用于为我的应用程序构建和运行 NUnit 测试。

我的问题是:如何将这个不受源代码控制的文件复制到 TeamCity 签出存储库的文件夹中? 在 TeamCity 开始构建我的应用程序之前,我该如何执行此操作?我确信这是可能的,因为我已经阅读了here,“应使用代理端结帐在每台机器上配置特定于机器的设置(如配置 SSL 通信等)。”我该怎么做呢?我无法从文档中找到直接的答案。

我读到this thread 提到了使用多个根的可能性,这意味着它将从公共存储库中提取公共源,并从具有受限访问权限的私有存储库中提取私有源,并且仅将访问权限授予 TeamCity。这是一个不错的解决方案,我可以看到这比每次运行构建时都有一个批处理文件或复制私有/本地文件的东西更容易维护,但由于某种原因,我不喜欢输入密码等。在存储库中。我不确定为什么我有这种偏见(它似乎很容易受到攻击),所以如果有人对这两种解决方案有任何经验,我很想听听他们的信息。我还想听听有关在受密码保护的存储库下存储敏感信息的意见。这是一种安全的做法吗?

感谢任何可以提供帮助的人。

PS:我查看了编辑 VCS 根页面和“服务器上的自定义克隆目录”设置,但我仍然不知道如何将文件复制到该目录。 TeamCity 的工作目录是改变还是保持不变?

【问题讨论】:

    标签: git testing configuration continuous-integration teamcity


    【解决方案1】:

    我也不喜欢将密码放入版本控制中,尤其是不像 Github 这样的外部托管版本控制。

    我只是将配置文件放在 TeamCity 之外的构建机器上的某个位置,并在构建中放置一个命令行步骤,在需要它们之前将它们复制到适当的位置。一般来说,

    • 将“命令可执行文件”设置为您的复制程序
    • 将“命令参数”设置为源文件和目标目录。

    您无需担心 TeamCity 工作目录在哪里,因为命令行步骤的当前目录将是您的构建目录,您可以使用相对路径作为目标。

    我不会尝试给出具体示例,因为我使用的堆栈与您不同,但我认为相同的原则应该有效。

    【讨论】:

    • 我实际上走了另一条路,将敏感信息放在私人存储库中。详情请看我的回复。不过,感谢您的帮助。我可能会使用命令行步骤来解决我遇到的另一个问题。
    【解决方案2】:

    在检查了具有敏感信息的面向公众的私有可访问存储库的安全方面后,我最终选择了第二个私有存储库来存储配置文件。该技术在here 中进行了描述。

    但是,该链接没有解决使用多个 VCS 根的主要问题 - 除非修改检出规则,否则 Teamcity 会将第一个 VCS 文件复制到检出目录,删除所有文件,然后将第二个 VCS 文件复制到同一个目录。我不知道为什么选择这种行为作为默认行为。这显然会使构建失败,因为原始代码文件不再存在。

    解决方案描述为here。基本上,我必须设置检出规则,将文件从第一个 VCS 根目录复制到子文件夹,然后在第二个 VCS 根目录上设置检出规则,将配置文件移动到该子文件夹中的正确位置。

    现在谈谈核心问题:将敏感信息存储在面向公众的私人可访问存储库中的安全隐患。这里重要的形容词是面向公众的。在这种情况下,我对安全性的基本要求是存储库应该具有与使用“安全”选项卡保护的 Windows 文件夹一样高的安全性。我用来证明它作为私有 Git 存储库更安全的论点是,它使用 HTTP 或 SSH 安全性,有人可能认为这与 Windows 文件夹安全性一样强,甚至更强大,因为它们比 Windows 文件夹安全性更暴露。 Windows 文件夹。因为这只是存储测试环境的登录信息,所以我不太担心。我的生产环境的所有敏感信息都将手动处理。但我对这个话题持开放态度。希望这个解决方案可以帮助其他人。请随时发表评论/提出问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-13
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多