【问题标题】:Build last commited SQL Script VSTS构建最后提交的 SQL 脚本 VSTS
【发布时间】:2017-11-24 15:21:36
【问题描述】:

我是 VSTS 新手,我想知道如何始终只构建最新提交的 SQL 脚本。

示例:我从我的存储库提交了example.sql,VSTS 构建只需要获取“example.sql”压缩包并发布工件以准备发布。

我该怎么做?

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-build-task


    【解决方案1】:

    VSTS 构建当前工作树的所有现有文件/脚本(repo 的指定分支)。

    如果您想将最新更改的文件压缩并发布为工件,您可以添加 PowerShell 任务(对于 linux 和 mac,您可以使用 Shell 脚本任务代替)作为助手。检测更改/添加的详细步骤如下:

    1.使用 PowerShell 任务获取更改/添加的文件并将文件从 $(Build.SourcesDirectory) 复制到另一个目录(例如 $(Build.ArtifactStagingDirectory)\files)。 Powershell脚本如下:

    $files=$(git diff HEAD HEAD~ --name-only)
    echo $files
    $temp=$files -split ' '
    $count=$temp.Length
    echo "Total changed $count files"
    New-Item -ItemType directory -Path $(Build.ArtifactStagingDirectory)\files
    For ($i=0; $i -lt $temp.Length; $i++)
    {
      $name=$temp[$i]
      echo "this is $name file"
      if (Test-Path "$(Build.SourcesDirectory)\$name")
        {
          Copy-Item $(Build.SourcesDirectory)\$name $(Build.ArtifactStagingDirectory)\files
        }
    }
    

    2。使用存档文件任务压缩更改的文件。例如从$(Build.ArtifactStagingDirectory)\files目录到$(Build.ArtifactStagingDirectory)\pack\$(Build.BuildId).zip

    3.使用 Publish Build Artifacts 任务从$(Build.ArtifactStagingDirectory)\pack 目录发布压缩文件

    【讨论】:

    • 效果很好,谢谢!但是当我提交两个脚本时,在 azure sql 数据库上发布的那一刻,我收到了这个错误:“找到多个文件以使用搜索模式 d:\a\r1\a***.sql 进行部署。只可以有一个人。”我需要做什么?
    • 不,它也适用于最新提交更改/添加多个文件。您收到错误消息的步骤是什么?你能在这里显示整个日志吗?
    • 当然。我正在使用 Azure SQL 数据库部署。日志:i.imgur.com/bNiXs0z.png 另外,当我删除一个文件并在同一个提交中添加另一个文件时,它在脚本上给了我错误,因为文件不在存储库中(它已被删除)。 “获取内容:找不到路径 'D:\a\1\s\tabelarenew.sql',因为它不存在。”有什么办法可以解决这个问题?
    • 报错截图是因为部署包SQL Script应该是唯一的。由于您更改了两个脚本,并且模式 **\*.script 与这两个文件匹配,因此导致了错误。您应该确保只有一个 SQL 脚本与 Azure SQL 数据库部署任务匹配。
    • 我更新了用于处理最新提交中已删除文件的 powershell 脚本。
    猜你喜欢
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多