我有一个VSTS发布管道,可以从git repo复制文件:
这个git repo确实很大-大约1GB。每次触发发布时,VSTS代理都会下载git repo的全部内容。有没有一种方法可以将VSTS配置为仅将更改下载到此git仓库中,即在存储库上运行git pull
?这样可以节省大量时间和带宽。
答案 0 :(得分:4)
有两种方法可以使下载工件步骤更有效。
首先删除发布管道中的docker工件。然后在每个发行环境的开始处添加 PowerShell任务(第一个任务)。
以下是仅下载更改文件的PowerShell:
mkdir partrepo
cd partrepo
git init
git remote add up -f https://Personal%20Access%20Token:{PAT}@{account}.visualstudio.com/{project}/_git/{repo}
#Or you can use the new Azure devops url instead
$files=$(git diff up/master up/master~ --name-only)
echo "changed files: $files"
$t=$files -is [array]
if ($files -is [array])
{
echo "multiple files updated"
for ($i=0;$i -lt $files.Length; $i++)
{
$tfile=$files[$i]
git checkout up/master -- $tfile
}
}
else
{
git checkout up/master -- $files
}
注意:由于默认情况下未选中“标准错误失败”选项,因此可以使用PowerShell任务版本2.*
。
您还可以将浅提取深度指定为1,然后下工件步骤将仅下载最新的提交。它将大大减少伪像的大小。
答案 1 :(得分:1)
答案 2 :(得分:0)
我认为您要寻找的实际上是使用构建管道中的README.md
文件发布为artifact
的构建管道的YAML。
resources:
- repo: self
queue:
name: Hosted VS2017
steps:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: README.md
然后在发布管道中,您可以从构建管道中添加工件(记住至少要至少构建一次!)。然后,该工件将在发布管道中可用。这是一个向管道添加“复制文件”任务并使用工件的示例;
总结一下
git pull
。