Мой репозиторий в проекте devops моей организации содержит множество решений .net, а также несколько проектов по объединению. Когда я запускаю свой конвейер сборки, он выходит из строя из-за нескольких из них:
Ошибка MSB3491: не удалось записать строки в файл "obj \ Release \ path \ to \ file". На диске недостаточно места.
Я бы хотел, чтобы конвейер извлекал и извлекал только те части репозитория, которые необходимы для успешной сборки. Это также может помочь со временем выполнения конвейера, поскольку в настоящее время он также получает все мои проекты Unity с гигабайтами ресурсов, что занимает вечно.
Я хотел бы распределить свои проекты по нескольким репозиториям, но админ не даст мне больше, чем тот, который у меня уже есть. Это стало намного лучше, когда я настроил git fetch как мелкий (--depth=1
), но время от времени я все еще получаю ошибку.
Вот как я настроил оформление заказа:
steps:
- checkout: self
clean: true
# shallow fetch
fetchDepth: 1
lfs: false
submodules: false
Сборка выполняется с помощью задачи VSBuild@1
.
Я не могу найти правильное решение своей проблемы, за исключением использования нескольких репозиториев, что сейчас не вариант.
Редактировать: Решение № 1 Шайки Абрамчика работает отлично. Вот моя полная реализация.
GitSparseCheckout.yml
:
parameters:
access: ''
repository: ''
sourcePath: ''
steps:
- checkout: none
- task: CmdLine@2
inputs:
script: |
ECHO ##[command] git init
git init
ECHO ##[command] git sparse-checkout: ${{ parameters.sourcePath }}
git config core.sparsecheckout true
echo ${{ parameters.sourcePath }} >> .git/info/sparse-checkout
ECHO ##[command] git remote add origin https://${{ parameters.repository }}
git remote add origin https://${{ parameters.access }}@${{ parameters.repository }}
ECHO ##[command] git fetch --progress --verbose --depth=1 origin master
git fetch --progress --verbose --depth=1 origin master
ECHO ##[command] git pull --progress --verbose origin master
git pull --progress --verbose origin master
Оформить заказ называется следующим образом (где необходимо изменить путь к шаблону):
- template: ../steps/GitSparseCheckout.yml
parameters:
access: anything:<YOUR_PERSONAL_ACCESS_TOKEN>
repository: dev.azure.com/organisation/project/_git/repository
sourcePath: path/to/files/