Загружать изменения в git repo только в конвейере выпуска VSTS - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть конвейер выпуска VSTS, который копирует файлы из репозитория git:

enter image description here

Этот репозиторий Git действительно большой - размером около 1 ГБ. Каждый раз, когда я запускаю релиз, агент VSTS загружает все содержимое репозитория git. Есть ли способ настроить VSTS для загрузки только изменений в это git-репо, т. Е. Запустить git pull в хранилище? Это сэкономило бы много времени и пропускной способности.

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Вы можете удалить репозиторий git из раздела «Артефакты» в конвейере выпуска и получить хранилище другим способом:

В вашем выпуске первой задачей будет задача командной строки, которая извлекает изменения из репозитория git.

enter image description here

0 голосов
/ 12 сентября 2018

Есть два способа сделать шаг загрузки артефактов более эффективным.

Вариант 1: использовать задачу PowerShell для загрузки обновленных файлов в последнем коммите

Сначала удалите артефакты докера в конвейере выпуска. Затем добавьте задачу 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.*, так как опция Fail on Standard Error по умолчанию отключена.

Вариант 2: загрузить только последний коммит из git repo

Вы также можете указать малая глубина извлечения как 1, тогда шаг артефакта вниз загрузит только последний коммит. И это резко уменьшит размер артефакта.

enter image description here

0 голосов
/ 11 сентября 2018

Я думаю, что вы действительно хотите использовать артефакт из конвейера сборки.Вот YAML для конвейера сборки, который публикует файл README.md как artifact с помощью задачи «Опубликовать артефакт».

resources:
- repo: self
queue:
  name: Hosted VS2017
steps:
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: README.md

Затем в конвейере выпуска вы можете добавить артефакт из вашей сборкитрубопровод (не забудьте сначала построить его хотя бы раз!).Этот артефакт будет доступен в конвейере выпуска.Вот пример, где я добавляю задачу «Копировать файлы» в конвейер и использую артефакт;

enter image description here

Итак, чтобы подвести итог;

  • Настройте конвейер сборки, который создается при обновлении хранилища, чтобы последние файлы всегда публиковались как артефакты.Конвейер сборки будет выполнять git pull, который вы ищете.
  • Использовать эти артефакты в вашем конвейере релиза.
...