【问题标题】:How to reference a file that was just checked in to source control?如何引用刚刚签入源代码管理的文件?
【发布时间】:2020-04-25 10:23:57
【问题描述】:

我有一个 Azure 管道,它在“签入”到 TFS 源代码控制时触发。它还运行一个简单的 PowerShell 脚本。

在该签入触发器上,我还想获取签入的文件,并在我的 PowerShell 脚本中引用它。该文件是一个 SQL 脚本,我将通过 PowerShell 对 SQL 服务器运行。

如何在我的 PowerShell 代理作业任务中引用该签入文件? 例如,您可以在 PowerShell 任务中使用 $(Build.Repository.LocalPath) 之类的内容引用您的工作文件夹。

然后$(Build.Repository.LocalPath)/mypath/myfile.sql 用于特定文件。我假设有某种“工作”变量可以引用刚刚触发触发器的项目。

【问题讨论】:

  • 在我看来,您将源代码控制和代码生成纠缠在一起。这对我来说似乎是一种反模式。我建议您只遍历一个文件夹并运行其中找到的所有脚本(并记录运行的脚本)。添加和删​​除文件时,它们会正确运行。您无需将它们显式添加到 powershell 脚本中。

标签: powershell tfs azure-devops azure-pipelines


【解决方案1】:

您似乎已在构建管道中启用 CI 触发器。如果您只是修改源代码管理中存在的文件,则可以在脚本中使用 $(Build.SourcesDirectory)/myfile.sql 之类的内容。

如果您签入一个新文件(只有一个文件),那么您可以在脚本中获取此构建中包含的变更集/提交并获取该文件。

如果您签入多个文件,这会很复杂,您需要获取此构建中包含的变更集/提交并查询文件以获取您需要的文件。

【讨论】:

    【解决方案2】:

    如果你看这里:https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml 这有一个在构建时可用的所有变量的列表,无论是在任务中还是在脚本中作为环境变量。其中之一是触发构建“Build.SourceVersion”的变更集/提交 ID。使用此值,您可以获取属于该变更集/提交的任何文件并在您的脚本中使用它。

    祝你好运

    ET

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多