【问题标题】:Any way to check-in into TFS from FAKE build target?有什么方法可以从 FAKE 构建目标签入 TFS?
【发布时间】:2015-03-13 07:44:39
【问题描述】:

我正在尝试创建 FAKE(F# Make) 构建目标,该目标将在构建成功后更新我的项目中的 AssemblyInfo 文件。版本信息文件存储在 TFS CVS 中,因此我需要将更新的文件从 FAKE 构建任务签入到 TFS。

使用 TFS 2010,从自定义活动中调用 FAKE。

我的流程是: - ...清理,调用构建目标 - 更新 AssemblyInfo 文件 - 将文件签入到 TFS

面临签入 TFS 问题...

有没有办法从 FAKE (F# Make) 目标签入到 TFS?

【问题讨论】:

  • 为什么不直接使用现有的自动递增版本控制?如果您将版本设置为Major.Minor.*(其中MajorMinor 是整数),版本将自动递增。
  • @DanielMann 自动增量仅适用于某些版本控制方案。作为一个反例,它不适用于语义版本控制:blog.ploeh.dk/2013/12/10/…
  • 目前我们在 FAKE 中没有直接的 TFS 助手。
  • 你不能不执行一个exe吗? “tf 签入”
  • 我尝试使用SourceLink.Tfs 模块在 FAKE 脚本中获取 TFS API。但是“tf checkin”也对我有用。谢谢!

标签: tfs f# msbuild f#-fake


【解决方案1】:

是的,但这将分为两部分。此外,这适用于 TFS 2015 新构建定义和 TFS Git 存储库。您可以根据需要对其进行修改以适应您的特定情况。这两个目标可以任意调用。

第一部分 - 更新 AssemblyInfo 文件

let AssemblyInfoFiles = !! @"src\**\AssemblyInfo.cs";
Target "SetVersions" (fun _ ->
  AssemblyInfoFiles
  |> Seq.iter (fun a ->
                  if tfBuildNumber <> null then
                    if isLocalBuild = false then
                      UpdateAttributes a [ Attribute.FileVersion tfBuildNumber]
              )
)

第二部分 - 签入修改后的 AssemblyInfo 文件

let CheckInMessage = "Files related to versioning where checked in.  ***NO_CI***"
let tfBuildSourceBranchName =  environVar "BUILD_SOURCEBRANCHNAME"
let tfBuilderRepositoryProvider = environVar "BUILD_REPOSITORY_PROVIDER"
Target "CheckinFiles" (fun _ ->
  AssemblyInfoFiles
  |> Seq.iter (fun a ->
          //This is for GIT REPOSITORY in TFS 2015 Build Definition
          if isLocalBuild = false &&  tfBuilderRepositoryProvider = "TfsGit" then
            checkoutBranch solutionDir tfBuildSourceBranchName
            trace ("File to stage: " + a)
            StageFile solutionDir a |> ignore
            Commit solutionDir CheckInMessage
            pull solutionDir "origin" tfBuildSourceBranchName
            push solutionDir
          )
)

第二部分的问题在于它为每个 AssemblyInfo 进行了提交,而我想在一次提交中批量处理这些。我能做到,只是懒得修了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2014-01-02
    • 2013-10-26
    • 1970-01-01
    • 2016-12-14
    相关资源
    最近更新 更多