【发布时间】:2017-11-24 15:21:36
【问题描述】:
我是 VSTS 新手,我想知道如何始终只构建最新提交的 SQL 脚本。
示例:我从我的存储库提交了example.sql,VSTS 构建只需要获取“example.sql”压缩包并发布工件以准备发布。
我该怎么做?
【问题讨论】:
标签: azure-devops azure-pipelines azure-pipelines-build-task
我是 VSTS 新手,我想知道如何始终只构建最新提交的 SQL 脚本。
示例:我从我的存储库提交了example.sql,VSTS 构建只需要获取“example.sql”压缩包并发布工件以准备发布。
我该怎么做?
【问题讨论】:
标签: azure-devops azure-pipelines azure-pipelines-build-task
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 目录发布压缩文件。
【讨论】:
**\*.script 与这两个文件匹配,因此导致了错误。您应该确保只有一个 SQL 脚本与 Azure SQL 数据库部署任务匹配。