Continuous integration 为开源项目构建脚本

Continuous integration 为开源项目构建脚本,continuous-integration,Continuous Integration,我的公司正在开发一个开源项目。因此,我们必须考虑两种不同的构建脚本设置。第一个是本地构建,我们和社区都使用它。第二个构建在CI服务器上执行(我们使用TeamCity) 现在出现了两个问题: 我们是否应该将特定于服务器的构建文件与本地构建文件放在同一个存储库中 如果是,我们如何处理这些敏感数据?例如,NuGet API密钥或版本信息是随着每夜/每周构建而增加的 目前的情况:我们只将本地构建文件放在存储库中,并将合理的内容保存在父目录中。因此感觉有点笨拙(至少对我个人来说) 我能想到的位置是:在存储

我的公司正在开发一个开源项目。因此,我们必须考虑两种不同的构建脚本设置。第一个是本地构建,我们和社区都使用它。第二个构建在CI服务器上执行(我们使用TeamCity)

现在出现了两个问题:

  • 我们是否应该将特定于服务器的构建文件与本地构建文件放在同一个存储库中
  • 如果是,我们如何处理这些敏感数据?例如,NuGet API密钥或版本信息是随着每夜/每周构建而增加的
  • 目前的情况:我们只将本地构建文件放在存储库中,并将合理的内容保存在父目录中。因此感觉有点笨拙(至少对我个人来说)


    我能想到的位置是:在存储库中有一个local.build和server.build文件。然后在TeamCity中设置一个包含密码和版本号的系统变量。现在我不知道team city如何处理属性的可见性。当然,我们不希望每个开发人员都能访问或读取密码。

    我认为您的直觉对第二个选项很好。您可以在源代码管理中包含这两个脚本,并将变量传递给server.build,或者您也可以将整个server.build过程移动到TeamCity构建配置中

    版本号:TC使用递增的生成计数器处理版本号,您可以将任意major.minor.etc前置到该计数器。您可以在“常规设置”页面上的“内部版本号格式”下配置内部版本号的格式。在我们的团队中,我们有一个构建参数,
    %version%
    ,我们用major.minor值填充它。然后,我们的内部版本号格式设置为
    %version%.{0}
    ,这将为我们提供major.minor.Build。此组合值可通过
    %system.build.number%
    变量获得


    敏感数据:您可以创建屏蔽敏感数据的生成参数。添加一个新参数,然后单击
    Spec
    字段中的
    Edit
    按钮。然后可以声明该参数应被视为密码(以及其他选项)。然后对该参数进行加密和模糊处理。您可以像使用任何其他构建参数一样使用它。

    我认为您的直觉对第二个选项很好。您可以在源代码管理中包含这两个脚本,并将变量传递给server.build,或者您也可以将整个server.build过程移动到TeamCity构建配置中

    版本号:TC使用递增的生成计数器处理版本号,您可以将任意major.minor.etc前置到该计数器。您可以在“常规设置”页面上的“内部版本号格式”下配置内部版本号的格式。在我们的团队中,我们有一个构建参数,
    %version%
    ,我们用major.minor值填充它。然后,我们的内部版本号格式设置为
    %version%.{0}
    ,这将为我们提供major.minor.Build。此组合值可通过
    %system.build.number%
    变量获得


    敏感数据:您可以创建屏蔽敏感数据的生成参数。添加一个新参数,然后单击
    Spec
    字段中的
    Edit
    按钮。然后可以声明该参数应被视为密码(以及其他选项)。然后对该参数进行加密和模糊处理。您可以像使用任何其他构建参数一样使用它。

    如何处理snk文件?地址私人文件(包括snk)。您将如何处理snk文件?地址私人文件(包括SNK)。